Я пытаюсь назначить дату через год с указанной мной даты.
Мой код выглядит так:
$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));
как K Prime, упомянутый ниже.
Пытаться: $futureDate=date('Y-m-d',strtotime('+1 year',$startDate));
,
чтобы .
и она работала 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;
//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'));
надеюсь, что этот более простой фрагмент кода поможет кому-то в будущем :)
Я предпочитаю 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');
strtotime()
возвращается bool(false)
, потому что не может проанализировать строку '+one year'
(не понимает «один»). false
затем неявно приводится к integer
метке времени 0
. Перед тем, как вставить его в другие функции , рекомендуется убедиться, strtotime()
что результат не соответствует bool(false)
действительности.
Возвращаемые значения
В случае успеха возвращает отметку времени, в противном случае - FALSE. До PHP 5.1.0 эта функция возвращала -1 в случае ошибки.
Есть также более простое и менее изощренное решение:
$monthDay = date('m/d');
$year = date('Y')+1;
$oneYearFuture = "".$monthDay."/".$year."";
echo"The date one year in the future is: ".$oneYearFuture."";
Мое решение: date('Y-m-d', time()-60*60*24*365);
Вы можете сделать его более «читабельным» с помощью определений:
define('ONE_SECOND', 1);
define('ONE_MINUTE', 60 * ONE_SECOND);
define('ONE_HOUR', 60 * ONE_MINUTE);
define('ONE_DAY', 24 * ONE_HOUR);
define('ONE_YEAR', 365 * ONE_DAY);
date('Y-m-d', time()-ONE_YEAR);