PHP преобразование целого числа в дату, обратный strtotime

<?php
echo strtotime("2014-01-01 00:00:01")."<hr>";
// output is 1388516401
?>

Я удивлен, если это может быть наоборот. Я имею в виду, могу ли я!--1-->. На самом деле я хочу знать, какова логика этого преобразования. Как php преобразует дату в определенное целое число.

4 ответов


Да, вы можете преобразовать его обратно. Вы можете попробовать:

date("Y-m-d H:i:s", 1388516401);

логика этого преобразования от даты до целого числа объясняется в strotime in php.net.

It is the number of seconds since January 1 1970 00:00:00 UTC.  

Printing echo strtotime("1970-01-01 00:00:00") gives you 0.
Printing echo strtotime("1970-01-01 00:00:01") gives you 1.

Это означает, что если вы печатаете strtotime("2014-01-01 00:00:01") который даст вам выход 1388516401, поэтому дата 2014-01-01 00:00:01 и 1388516401 секунд с 1 января 1970 00:00:00 UTC.

надеюсь, это поможет вам


вы можете попробовать это,

echo date("Y-m-d H:i:s", 1388516401);

как отмечает игры,

это означает, что вы передаете строковое значение для времени и, возможно, значение для текущего времени, которое является меткой времени UNIX. Возвращаемое значение является целым числом, которое является меткой времени UNIX.

echo strtotime("2014-01-01 00:00:01");

это вернется в значение 1388516401, которое является меткой времени UNIX для даты 2014-01-01. Это можно подтвердить с помощью функции date() как показано ниже:

echo date('Y-m-d', 1198148400); // echos 2014-01-01

Я думаю, вы спрашиваете, почему 1388516401 равен 2014-01-01...?

для этого есть историческая причина. Существует 32-разрядная целочисленная переменная, называемая time_t, это сохраняет счет времени, прошедшего с 1970-01-01 00:00:00. Его значение выражает время в секунд. Это означает, что в 2014-01-01 00:00:01 time_t будет равна 1388516401.

Это приводит нас к другому интересному факт... В 2038-01-19 03:14:07 time_t составит 2147485547 максимальное значение для 32-битного числа. Когда-либо слышал о Джон е конкур НТ и проблема 2038? : D


функция time() отображает секунды между настоящим моментом и эпохой unix , 01 01 1970 (00:00:00 GMT). Strtotime() преобразует обычный формат даты в формат времени (). Таким образом, представление этой даты в секундах будет : 1388516401

источник:http://www.php.net/time