我的理解是,由于PHP使用毫秒表示日期的性质,你不能表示2038年以后的日期。我有一个问题,我想计算遥远的未来的日期。几千年以后。显然,由于限制,我不能使用php date函数来表示这个日期,然而,我有自己的方法..我认为如果不包括这些额外的信息,我应该能够计算出更远的未来,因为我愿意放弃很多信息,这是正确的吗?这是目前正在做的任何图书馆吗?如果没有,有任何关于如何解决这个问题的建议吗?
m1m5dgzv1#
您也可以使用DateTime类,它在内部独立地表示时间组件。因此,它不受2038限制的影响(除非您用途::getTimestamp)。
DateTime
ygya80vv2#
您 * 可以 * 使用64位平台。整数的大小取决于平台,尽管最大值约为20亿是通常的值(即32位带符号)。64位平台的最大值通常约为9E18。Source的一个。使用var_dump(PHP_INT_SIZE === 8)确定您的平台是64位。如果是TRUE,则您的系统是64位。
var_dump(PHP_INT_SIZE === 8)
TRUE
gupuwyp23#
PHP在5.2版本中引入了Datetime()类来解决这个问题。但你仍然必须在64位操作系统中。
3b6akqbq4#
你是对的,PHP不允许你处理大于2038的日期。然而,有一些库,如this one,利用了浮点数是64位的事实,因此如果需要的话,允许你绕过这个问题。(所有这些都假设你使用的是32位系统.如果你使用的是64位,你就可以了)。
1tu0hz3e5#
忘记Windows吧!即使你运行的是Apache 64-Bit而不是Windows 64-Bit!
$timestamp = strtotime('22-09-2508'); var_dump ($timestamp); // returns bool false using WAMP 64-Bit over Windows 64 Bit
字符串如果您需要计算时间戳,请使用64位系统(而不是Windows):
$timestamp = strtotime('22-09-2508'); var_dump ($timestamp); // returns int 17000496000 using a LAMP Server
型您可以在Windows上使用VMWare运行LAMP服务器,并且很可能您的最终主机服务器也将使用此64位服务。换句话说就是:
if (intval("9223372036854775807")==9223372036854775807) { // 64-bit } else { // 32-bit }
型明白了吗?
wztqucjr6#
这个问题是最近在PHP中发现的第一个问题之一。我认为最好从DateTimeImmutable获取用户的日期,并将其存储为数据库中的变量char。在检索日期时,您可以使用一个简单的函数以您喜欢的格式显示日期。例如,日期可以是:
DateTimeImmutable
$date = "4069-03-27 00:00:00"; // store it as a variable char in the database
字符串你可以创建一个函数来进行比较,减法,还可以做更多的事情。
6条答案
按热度按时间m1m5dgzv1#
您也可以使用
DateTime
类,它在内部独立地表示时间组件。因此,它不受2038限制的影响(除非您用途::getTimestamp)。ygya80vv2#
您 * 可以 * 使用64位平台。
整数的大小取决于平台,尽管最大值约为20亿是通常的值(即32位带符号)。64位平台的最大值通常约为9E18。
Source的一个。
使用
var_dump(PHP_INT_SIZE === 8)
确定您的平台是64位。如果是TRUE
,则您的系统是64位。gupuwyp23#
PHP在5.2版本中引入了Datetime()类来解决这个问题。但你仍然必须在64位操作系统中。
3b6akqbq4#
你是对的,PHP不允许你处理大于2038的日期。然而,有一些库,如this one,利用了浮点数是64位的事实,因此如果需要的话,允许你绕过这个问题。(所有这些都假设你使用的是32位系统.如果你使用的是64位,你就可以了)。
1tu0hz3e5#
忘记Windows吧!即使你运行的是Apache 64-Bit而不是Windows 64-Bit!
字符串
如果您需要计算时间戳,请使用64位系统(而不是Windows):
型
您可以在Windows上使用VMWare运行LAMP服务器,并且很可能您的最终主机服务器也将使用此64位服务。
换句话说就是:
型
明白了吗?
wztqucjr6#
这个问题是最近在PHP中发现的第一个问题之一。
我认为最好从
DateTimeImmutable
获取用户的日期,并将其存储为数据库中的变量char。在检索日期时,您可以使用一个简单的函数以您喜欢的格式显示日期。
例如,日期可以是:
字符串
你可以创建一个函数来进行比较,减法,还可以做更多的事情。