<?php
echo strtotime("2014-01-01 00:00:01")."<hr>";
// output is 1388516401
?>
如果它可以逆转,我很惊讶。我的意思是我可以convert 1388516401 to 2014-01-01 00:00:01
.我真正想知道的是,这种转换背后的逻辑是什么。php 如何将日期转换为特定整数。
是的,你可以把它转换回来。您可以尝试:
date("Y-m-d H:i:s", 1388516401);
这种从日期到整数的转换背后的逻辑在 PHP 的 strtotime 中进行了解释:
该函数期望获得一个包含英文日期格式的字符串,并将尝试将该格式解析为 Unix 时间戳(自 1970 年 1 月 1 日 00:00:00 UTC 以来的秒数(,相对于现在给出的时间戳,或者如果未提供现在,则为当前时间。
例如,strtotime("1970-01-01 00:00:00")
给你 0,strtotime("1970-01-01 00:00:01")
给你 1。
这意味着,如果您正在打印strtotime("2014-01-01 00:00:01")
,这将为您提供输出1388516401
,则日期2014-01-01 00:00:01
是 1970 年 1 月 1 日 00:00:00 UTC 之后的 1,388,516,401 秒。
你能试试这个吗,
echo date("Y-m-d H:i:s", 1388516401);
正如theGame所指出的,
这意味着您可以传入时间的字符串值,也可以选择传入当前时间的值,即 UNIX 时间戳。返回的值是一个整数,它是一个 UNIX 时间戳。
echo strtotime("2014-01-01 00:00:01");
这将返回到值 1388516401,即日期 2014-01-01 的 UNIX 时间戳。这可以使用 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(( 将普通日期格式转换为 time(( 格式。因此,该日期以秒表示为1388516401:
来源: http://www.php.net/time