Я пытаюсь получить дату, которая составляет один год с указанной мной даты.
Мой код выглядит следующим образом:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Он возвращает неверную дату. Любые идеи, почему?
Я пытаюсь получить дату, которая составляет один год с указанной мной даты.
Мой код выглядит следующим образом:
$futureDate=date('Y-m-d', strtotime('+one year', $startDate));
Он возвращает неверную дату. Любые идеи, почему?
Чтобы добавить один год к сегодняшней дате, используйте следующее:
$oneYearOn = date('Y-m-d',strtotime(date("Y-m-d", mktime()) . " + 365 day"));
Для других примеров вы должны инициализировать $StartingDate с отметкой времени например:
$StartingDate = mktime(); // todays date as a timestamp
Попробуйте это
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 365 day"));
или
$newEndingDate = date("Y-m-d", strtotime(date("Y-m-d", strtotime($StaringDate)) . " + 1 year"));
$futureDate=date('Y-m-d', strtotime('+1 year'));
$futureDate через год!
$futureDate=date('Y-m-d', strtotime('+1 year', strtotime($startDate)) );
$futureDate - один год из $startDate!
Попробуйте: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
// Declare a variable for this year
$this_year = date("Y");
// Add 1 to the variable
$next_year = $this_year + 1;
$year_after = $this_year + 2;
// Check your code
echo "This year is ";
echo $this_year;
echo "<br />";
echo "Next year is ";
echo $next_year;
echo "<br />";
echo "The year after that is ";
echo $year_after;
имела такую же проблему, однако это было самое простое решение:
<?php (date('Y')+1).date('-m-d'); ?>
Если вы используете PHP 5.3, это связано с тем, что вам нужно установить часовой пояс по умолчанию:
date_default_timezone_set()
strtotime()
возвращает bool(false)
, потому что он не может разобрать строку '+one year'
(она не понимает "один" ). false
затем неявно отображается в integer
timestamp 0
. Это хорошая идея, чтобы проверить вывод strtotime()
не bool(false)
, прежде чем переходить в другие функции.
Возвращаемые значения
Возвращает временную метку успеха, FALSE в противном случае. До PHP 5.1.0 это функция вернет -1 при сбое.
Попробуйте это
$nextyear = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)), date("d",strtotime($startDate)), date("Y",strtotime($startDate))+1));
Я предпочитаю подход OO:
$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))
Используйте DateTimeImmutable
, иначе вы также измените исходную дату!
more on DateTimeImmutable: http://php.net/manual/en/class.datetimeimmutable.php
Если вы просто хотите от сегодняшней даты, вы всегда можете:
new \DateTimeImmutable('-1 Month');
Существует также более простое и менее сложное решение:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
//1 year from today date
echo date('d-m-Y', strtotime('+1 year'));
//1 year from from specific date
echo date('22-09-Y', strtotime('+1 year'));
надеюсь, что этот более простой бит кода поможет кому-то в будущем:)
В моем случае (я хочу добавить 3 года к текущей дате) решение было:
$future_date = date('Y-m-d', strtotime("now + 3 years"));
В Гардене, Треби и Даниэле Лиме: что будет с 29 февраля? Иногда в феврале всего 28 дней:)
Остальной мир
$now = time();
$future = date("d-m-Y", strtotime(date("d-m-Y", $now) . " + 1 year"));
echo $future;
США
$now = time();
$future = date("Y-m-d", strtotime(date("Y-m-d", $now) . " + 1 year"));
echo $future;