Разница между двумя датами в месяцах в переполнении стека

Я пытаюсь получить разницу между двумя месяцами. Например, для ниже, я хотел бы 2 месяца.

$datetime1 = date_create('2017-03-01');
$datetime2 = date_create('2017-04-30');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%m months');
echo $interval->format('%d days');

Это дает мне 2 месяца и 1 день.

-1

Решение

Я пытаюсь получить разницу между двумя месяцами. Например, для ниже, я хотел бы 2 месяца.

$datetime1 = date_create('2017-03-01');
$datetime2 = date_create('2017-04-30');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%m months');
echo $interval->format('%d days');

Это дает мне 2 месяца и 1 день.

самый старый «data-shortcut =» O

Другие решения

Причина, по которой вы получаете неправильный результат, скорее всего, потому что вы не установили часовой пояс по умолчанию, один для «вашего» часового пояса.

В добавлении и например:

date_default_timezone_set('America/New_York');

вернул правильную разницу во времени, при этом не используя его, вернул то, что ты сейчас получаешь.

Используйте тот для своего собственного часового пояса, или установите это в своих системных файлах.

Из руководства http://php.net/manual/en/datetime.diff.php в разделе «Примечания, внесенные пользователем»:

«При использовании datediff убедитесь, что ваш часовой пояс правильный, для меня в 64-битной Windows 7 он вел себя очень странно, когда часовой пояс был неправильным (я сравнивал сейчас со временем в базе данных и метаданными exif на фотографиях). Например: date_default_timezone_set (‘Europe /Осло’);»

и пройдите остальную часть «Пользовательских заметок».

  • Другой возможной причиной может быть местоположение сервера, которое отличается от «вашей» позиции на «земле».

Соответствующая ссылка из комментариев, предоставленных RiggsFolly:

который может быть здесь.


Редактировать:

Заметив, что ОП принимает этот ответ, взятый из комментария RiggsFolly, он также должен был добавить:

date_default_timezone_set('UTC');

Я бы назвал это совместным предприятием, и я не могу взять на себя всю ответственность за это.

голосует «data-shortcut =» V

2
По вопросам рекламы [email protected]