首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDate -负值不起作用

MongoDate -负值不起作用
EN

Stack Overflow用户
提问于 2014-01-23 18:41:38
回答 2查看 328关注 0票数 0

我使用MongoDB将日期字段插入PHP-蒙古国集合。

在2014年5月29日,我尝试了如下

new MongoDate(1401321600)及其在Mongocollection中创建ISODate("2014-05-29T00:00:00Z"),这是正确的

但在1857年5月28日,我尝试了如下

new MongoDate(-3553200000)及其在Mongocollection中创建ISODate("1993-07-04T06:28:16Z")错误的

但在2045年5月29日,我尝试了如下

new MongoDate(2379628800)及其在Mongocollection中创建ISODate("1909-04-22T17:31:44Z")错误的

PHP MongoDate在某一年之后/之前不再工作。我对这个问题一无所知。有人知道解决办法吗?

EN

回答 2

Stack Overflow用户

发布于 2014-01-24 04:16:36

这个问题与以32位整数和64位整数表示的值范围有关。如果您有64位的PHP,MongoDate类应该可以像预期的那样工作。

对于32位PHP构建,可以表示的日期值的范围通常在1-1970年1月-1970年至19-1月-2038之间。这与标准的格式化相同。

MongoDB驱动程序包括一些技巧,试图绕过在32位系统上处理64位数字的限制,包括一个班级,它与64位数字的字符串值发生冲突。

如果升级到MongoDB 1.4.3PHP驱动程序发行版或更新版本,则MongoDate类应该支持32位系统上的64位时间戳(参见PHP-423)。

如果可能的话,一个更可靠的选择是升级到64位版本的PHP。

票数 1
EN

Stack Overflow用户

发布于 2014-10-23 11:18:00

我也遇到了这个问题,新的驱动程序(1.4.3)不起作用。通过该修复程序中的注释,问题只得到了部分解决,因为在2038年之后或1902年之前仅使用PHP创建MongoDate是不可能的。

这很烦人,因为32位PHP可以处理这个日期范围,MongoDB也可以。关键是司机,这是无法应付的。

只有当问题370得到解决(https://jira.mongodb.org/browse/PHP-370)时,才能真正解决这个问题。

同时,最好的解决方案似乎是将日期(在数据库中)存储为字符串,然后根据需要将字符串转换为PHP。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21316705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档