我有三台服务器,在所有三台服务器上执行以下操作:
echo strtotime('2099-12-31');
echo strtotime(date('Y-m-d'));
gets me:
服务器#1:(php 5.3.8,64位)
4102376400
1328418000
服务器2:(php 5.3.2,32位)
**[nothing]**
1328418000
服务器#3:(php 5.3.2 - 64位我认为这可能是php版本问题)
4102376400
1328418000
什么会导致 strtotime 在其中一台服务器上失败而在其他服务器上失败?这三个在 php.ini 中具有相同的默认时区和 date.timezone 设置(不确定这是否会产生影响)。我也打开了错误,但我没有看到任何东西。
可能是32位的问题。它在我的 64 位服务器上工作得很好,但我的 32 位 Ubuntu 在strtotime('2099-12-31')
有关更多信息,请参阅以下注释manual http://php.net/manual/en/function.strtotime.php(我突出显示):
时间戳的有效范围通常是从 1901 年 12 月 13 日星期五 20:45:54 UTC 到 2038 年 1 月 19 日星期二 03:14:07 UTC。 (这些日期对应于 32 位有符号整数的最小值和最大值。)此外,并非所有平台都支持负时间戳,因此您的日期范围可能会被限制为不早于 Unix 纪元。这意味着例如1970 年 1 月 1 日之前的日期不适用于 Windows、某些 Linux 发行版和其他一些操作系统。 PHP 5.1.0 和更新版本克服了这个限制。
对于 64 位版本的 PHP,时间戳的有效范围实际上是无限的,因为 64 位可以代表任一方向的大约 2930 亿年。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)