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