Я намагаюся отримати дату, яка становить один рік від дати, яку я вказав.
Мій код виглядає так:
$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));
про що згадувалося нижче.
Спробуйте: $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;
Я віддаю перевагу підходу 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);