gpt4 book ai didi

PHP:为什么 strtotime 转换会给出不同的值并且仅限于特定日期?

转载 作者:太空宇宙 更新时间:2023-11-03 17:17:45 26 4
gpt4 key购买 nike

我有两个使用不同操作系统的网络服务器。

SERVER 1 在带有 LAMP 服务器的 Centos 5 中运行。 PHP 版本 5.3.21

SERVER 2 在带有 LAMP 服务器的 openSUSE 11.3 中运行。 PHP 版本 5.3.5

两个 PHP 配置相同。有些是默认的。

我有一个包含如下代码的 php 文件:

<?php
/* TEST STRTOTIME */
echo "<br /><br />".strtotime("2038-01-01");
echo "<br /><br />".strtotime("2039-01-01");
?>

当我在 SERVER 1 中运行这个文件时,结果是:

2145934800

2177470800

但是当我在SERVER 2 中运行这个文件时,第二次转换没有产生任何结果。只显示结果是:

2145891600

为什么在两台服务器上转换的结果给出不同的值 ?而同一个文件。为什么在 SERVER 2 无法在上述日期 2038-01-01 转换?这个问题有解决办法吗?

最佳答案

您的远程服务器可能是 32 位的。您将需要一个 64 位服务器来处理日期 after roughly 2038 .

原因是您的远程服务器将其整数存储为带符号的 32 位整数。可以存储为带符号的 32 位整数的最大数是 2,147,483,647 (2^31 - 1)。由于这个数字是 1970 年 1 月 1 日(Unix 纪元)之后的秒数,你可以看到这个数字最终会用完(如果不检查边界,可能会溢出)。

Example

图片来源:Wikipedia

关于PHP:为什么 strtotime 转换会给出不同的值并且仅限于特定日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15778849/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com