$дата + 1 год?


Я пытаюсь получить дату, которая составляет один год с даты уточняю.

мой код выглядит так:

$futureDate=date('Y-m-d', strtotime('+one year', $startDate));

он возвращает неправильную дату. Есть идеи почему?

12 60

12 ответов:

чтобы добавить один год к сегодняшней дате, используйте следующее:

$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));

просто была такая же проблема, однако это было самое простое решение:

<?php (date('Y')+1).date('-m-d'); ?>
// 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 5.3, это потому, что вам нужно, чтобы установить часовой пояс по умолчанию:

date_default_timezone_set()

strtotime() возвращается bool(false), потому что он не может разобрать строку '+one year' (он не понимает "один"). false затем неявно приводится к integer метка 0. Это хорошая идея, чтобы проверить 's не bool(false) перед тем, как вы идете пихать его в другие функции.

документы:

Возвращаемые Значения

возвращает метку времени на успех, FALSE иначе. До PHP 5.1.0, это функция вернет -1 при ошибке.

Я предпочитаю подход OO:

$date = new \DateTimeImmutable('today'); //'today' gives midnight, leave blank for current time.
$futureDate = $date->add(\DateInterval::createFromDateString('+1 Year'))

использовать DateTimeImmutable в противном случае вы также измените исходную дату! подробнее о DateTimeImmutable:http://php.net/manual/en/class.datetimeimmutable.php


Если вы просто хотите от сегодняшней даты, то вы всегда можете это сделать:

new \DateTimeImmutable('-1 Month');
//1 year from today's date
echo date('d-m-Y', strtotime('+1 year'));

//1 year from from specific date
echo date('22-09-Y', strtotime('+1 year'));

надеюсь, что этот более простой бит кода поможет кому-то в будущем :)

Попробуй Такое

$nextyear  = date("M d,Y",mktime(0, 0, 0, date("m",strtotime($startDate)),   date("d",strtotime($startDate)),   date("Y",strtotime($startDate))+1));

существует также более простое и менее сложное решение:

$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";

в моем случае (я хочу добавить 3 года к текущей дате) решение:

$future_date = date('Y-m-d', strtotime("now + 3 years"));

Гардени, Треби и Даниэль Лима: что будет с 29 февраля? Иногда в феврале только 28 дней :)