Встроенный в PHP метод strtotime(...)
ожидает допустимый формат времени и обрабатывает ваш ввод как секунд , и относительно значения, которое вы пытаетесь преобразовать во время, мы можем сказать, что:
- Ваш номер
43556 seconds
равен 725.9
часам (разделенным на 60
) 725.9
часам, равным 30.2
дням. 30
дням равны один итолько один месяц. - Первый месяц года -
January
. - Первый год часов PHP -
1970
.
И этоВыясните, почему вы застряли с Jan-70
.
В любом случае, если ваше время основано на Excel
, вы можете использовать приведенную ниже формулу для изменения с Дата Excel на Дата Unix , затем вы можете использовать "gmdate(...)
" для получения реальной даты (например, другой ответ ):
$EXCEL_DATE = 43556; // Your CSV value goes here
$UNIX_DATE = ($EXCEL_DATE - 25569) * 86400;
echo gmdate("d-M-Y H:i:s", $UNIX_DATE);
Вывод:
01-Apr-2019 00:00:00
Но, если ваше время НЕ Excel
, вы должны:
- Узнать, на каком году и дате основаны ваши времена CSV.
- Преобразовать это всекунд (где
1970
должен быть равен нулю), чтобы получить $baseTime
. - Наконец, просто добавьте
$baseTime
к вашим значениям времени CSV.
Например:
$baseTime = strtotime( 'Tue Dec 15 2009' );
$tt = date( "d-m-Y H:i:s", strtotime( $baseTime + 43556 ) );
var_dump( $tt );