Дата суммы с использованием strtotime всегда возвращается 01.01.1970 - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь добавить 1 день к дате, используя strtotime, но не могу заставить его работать. Всегда возвращается 02/01/1970

$date = date ("d/m/Y H:i:s", filemtime($directory));
$newdate = date("d/m/Y", strtotime($date));
$tomorrow = date('d/m/Y',strtotime($newdate . "+1 days"));
echo $tomorrow; //Always return 02/01/1970

Ответы [ 3 ]

1 голос
/ 20 января 2020

Поскольку strtotime() различает формат даты в США и формат «Разумный», обращаясь к разделителю даты, все, что вам нужно сделать, - это использовать разделитель -, если вы хотите использовать разумный формат даты, например, в промежуточном манипуляции с датами

$date = date ("d-m-Y H:i:s", filemtime($directory));
$newdate = date("d-m-Y", strtotime($date));
$tomorrow = date('d/m/Y',strtotime($newdate . "+1 days"));
echo $tomorrow; //Always return 02/01/1970

ИЗ руководства

Примечание:

Даты в форматах m / d / y или dmy неоднозначны глядя на разделитель между различными компонентами: если разделитель является sla sh (/), то предполагается, что американский m / d / y; тогда как если разделителем является da sh (-) или точка (.), то подразумевается европейский формат dmy. Однако, если год указан в формате двух ди git, а разделитель - да sh (-), строка даты анализируется как ymd.

Чтобы избежать потенциальной неоднозначности, лучше всего по возможности использовать даты ISO 8601 (ГГГГ-ММ-ДД) или DateTime :: createFromFormat ().

0 голосов
/ 20 января 2020

Если ваш filemtime($directory) возвращает строку, отформатированную как ваша маска date(), я имею в виду d/m/Y H:i:s, то вы можете сделать следующие шаги:

  • , например, согласно этой маске, это выглядит так:
$s = "02/06/2019 22:23:22";
  • теперь вы можете сделать strtotime()
$date = date ("d/m/Y H:i:s", strtotime($s));
  • и затем преобразовать его в DateTime объект
$st_date = new DateTime($date); 
  • теперь вы можете просто изменить его, как хотите
$st_date->modify('+1 days'); 
  • , чтобы увидеть значение строки результата:
$tomorrow = $st_date->format('d/m/Y');
echo 'tomorrow -> '.$tomorrow;

Выход:

date->02/06/2019 22:23:22
tomorrow -> 03/06/2019

Демо

0 голосов
/ 20 января 2020

Лучше работать с DateTime():

$date = new DateTime(strtotime(filemtime($directory)));
echo $newdate = $date->format('d/m/Y');
$date->modify('+1 day');
echo $tomorrow = $date->format('d/m/Y');

Вывод:

20/01/2020
21/01/2020
...