我可以像下面这样比较两个mongodates吗?在我的测试中,它运行良好。但mongodates是对象,它们将来也会以同样的方式工作吗?
$d1 = new MongoDate(1391671630);
$d2 = new MongoDate(1391671631);
echo ($d1 < $d2); //returns 1 which is correct.
//and i tried all other comparisons (>, ==, >=, <=). Everything works good. 发布于 2014-02-06 16:13:08
您将需要使用MongoDate对象的sec属性:
$d1->sec < $d2->sec发布于 2014-02-13 05:22:49
mongo驱动程序中的MongoDate类对比较运算符没有特殊支持。您看到的行为很可能是内部PHP行为,将两个对象与<、<=、>和>=操作符进行比较会按顺序检查属性。碰巧MongoDate在$usec之前声明了它的$sec属性,所以这是可行的。我在PHP手册中没有找到这个行为的文档,但是在我期望找到它的页面上的this comment中讨论了它。
您可能想要跟踪PHP-226,因为有计划添加一个助手方法来返回MongoDate的浮点值(类似于microtime(true))。按原样,__toString()返回值没有多大帮助,因为微秒出现在秒数之前。
我还打开了PHP-979,将其作为功能请求进行跟踪(对比较运算符的重载支持)。
发布于 2014-02-06 16:19:26
这些驱动程序是由MongoDB的员工维护的,而且大多数都是这样。因此,作为基础驱动程序实现列出的大多数内容无论如何都将始终是规范的一部分。
在幕后,MongoDB实际上在内部将该值存储为一个纪元时间戳,并且MongoDate类确保将该值作为具有正确值的有效BSON类型通过网络传递。因此,使用内部识别的类型是您的优势所在,这样服务器端的日期比较就会按预期工作。
https://stackoverflow.com/questions/21596730
复制相似问题