最大时间()| PHP

最大时间()| PHP,php,datetime,date,time,Php,Datetime,Date,Time,这是一个愚蠢的问题,但是time()和它的未来日期的最大INT值是多少 2999年1月1日 时间()会达到那个值吗?如果选择较大的time()值,将返回以下结果: 1970年1月1日星期四凌晨1:00 正常整数日期 今天的输出日期:2010年10月17日星期日下午2:06 但我只想知道最大的int日期和最后一个日期。最后一个32位整数时间戳将在2038年1月19日到达。这被称为。PHP存储它可以在PHP\u INT\u MAX常量中表示的最高整数: date('Y-m-d H:i:s', PHP

这是一个愚蠢的问题,但是
time()
和它的未来日期的最大INT值是多少

2999年1月1日

时间()会达到那个值吗?如果选择较大的
time()
值,将返回以下结果:

1970年1月1日星期四凌晨1:00

正常整数日期

今天的输出日期:2010年10月17日星期日下午2:06


但我只想知道最大的int日期和最后一个日期。

最后一个32位整数时间戳将在2038年1月19日到达。这被称为。

PHP存储它可以在
PHP\u INT\u MAX
常量中表示的最高整数:

date('Y-m-d H:i:s', PHP_INT_MAX); // 2038-01-19 04:14:07

如果您想使用除此之外的日期,请考虑使用例如


请记住,Y2038问题不适用于64位系统。

DateTime似乎也在64位服务器上使用32位。 所以你就有麻烦了

我是这样解决的:

new DateTime("99999/12/31 00:00:00");
因为日期溢出了DateTime的最大长度,所以date使用最大可能值并返回如下DateTime对象(使用var_dump检查):


我不确定它是否与PHP版本不同。我已经用5.4版测试过了

我知道的最短的方法就是得到明天的日期:

日期(“Y-n-j”,标准时间(“+1天”))


date(“Y-n-j”,PHP_INT_MAX)
在64位系统上给出了潜在的危险值:
292277026596-12-4
在64位平台上
PHP_INT_MAX
没有反映32位平台的最大INT值。以下是如何获得它:

$max32bitInt = PHP_INT_SIZE == 4 ? PHP_INT_MAX : PHP_INT_MAX>>32;
如果您总是使用64位平台,只需使用:

PHP_INT_MAX>>32

对于MySQL,另请参见PHP侧的链接也有很好的背景信息,最近在PHP的
time()
中修复了该链接吗?现在,它可以为日期生成的最大值是
9223372036854772207
04.12.292277026596 15:30:07
)(非常接近64位最大整数值)是的,使用
DateTime
,并且在mySQL端,
DateTime
字段类型完全修复了这个问题。感谢这个Pekka。一旦我们接近它,这个问题会得到解决吗?@YouBook如果PHP在那时仍然存在,可能。通过将底层系统切换到更大的整数,这将很容易修复—由于PHP的弱类型,这不会成为什么问题。或者,使用Gordon建议的
DateTime
,基本上这个问题会根据定义自行解决,因为2038是32位系统中的最大整数,而大多数计算机已经是64位的,这意味着整数的范围会更大……嗯,你确定吗?PHP对整数的内部处理会自动变为64位吗?我不太确定,但它似乎在我的框中滚动…:-)在未来3000亿年内,64位是可以的。小心点。Y2038问题始终适用于Windows系统。“64位平台通常最大值约为9E18,但Windows除外,它总是32位的。”如果我没记错的话,即使在64位机器上,Windows上的XAMPP仍然使用32位整数。
$max32bitInt = PHP_INT_SIZE == 4 ? PHP_INT_MAX : PHP_INT_MAX>>32;
PHP_INT_MAX>>32