mysql — PHP 5.x strtotime не анализирует британский формат d-m-y должным образом

Я использую один и тот же код более 5 лет, PHP 5.x и внезапно у меня возникли проблемы с strtotime и британскими форматами дат. Я написал этот маленький скрипт для тестирования:

<?php
echo "<br /><b>PostDate: 1-7-15</b>";
$format="d-m-y";
$date="1-7-15";
$c = strtotime($date);
echo "<br /><b>Unix TS: - ".$c."</b>";
$a = date($format,$c) ;
echo "<br /><b>Unix TS to date - ".$a."</b>";
echo "<br /> <br />";
echo "<br /><b>PostDate: 7/1/15</b>";
$format="m/d/y";
$date="7/1/15";
$c = strtotime($date);
echo "<br /><b>Unix TS: - ".$c."</b>";
$a = date($format,$c) ;
echo "<br /><b>Unix TS to date - ".$a."</b>";
?>

Это выводит:

PostDate: 1-7-15
Unix TS: - 995173200
Unix TS to date - 15-07-01PostDate: 7/1/15
Unix TS: - 1435726800
Unix TS to date - 07/01/15

Вы можете ясно видеть, что британская версия не верна, американская версия верна. Версия для Великобритании неправильно конвертируется в метку времени Unix.

Как я уже говорил, я использовал strtotime таким образом годами, вдруг эти результаты? Я схожу с ума?

1

Решение

Я изменил строку:

$c = strtotime($date);

Для того, чтобы:

$c=strtotime(date($format, strtotime($date)));

и это работает для всех форматов даты, даже d M y. Так странно…

0

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector