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