PHP Преобразование целого в Date, обратное strtotime
<?php
echo strtotime("2014-01-01 00:00:01")."<hr>";
// output is 1388516401
?>
Я удивлен, если это может быть наоборот. Я имею в виду, могу ли я convert 1388516401 to 2014-01-01 00:00:01
.
Я действительно хочу знать, какова логика этого преобразования. Как преобразовать дату преобразования в конкретное целое число.
Ответы
Ответ 1
Да, вы можете преобразовать его обратно. Вы можете попробовать:
date("Y-m-d H:i:s", 1388516401);
Логика, связанная с этим преобразованием с даты на целое, объясняется в стромме в 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.
Надеюсь, это поможет вам
Ответ 2
Можете ли вы попробовать это,
echo date("Y-m-d H:i:s", 1388516401);
Как отмечено thegame,
Это означает, что вы передаете строковое значение для времени и необязательно значение для текущего времени, которое является отметкой времени 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
Ответ 3
Я думаю, вы спрашиваете, почему 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
Ответ 4
Функция time() отображает секунды между текущей и эпохой unix, 01 01 1970 (00:00:00 GMT). Strtotime() преобразует нормальный формат даты в формат time(). Таким образом, представление этой даты в секундах будет: 1388516401
Источник: http://www.php.net/time