从阅读docs,我的印象是ISODate只是包装了Date构造函数。然而,我似乎无法让它们在过去很远很远的日期正常工作。例如:MongoDB ISODate()给出了不同于Date()的结果?
new Date(-8640000000000000); // Mon Apr 19 -271821 18:00:00 GMT-0600 (Mountain Daylight Time)
new Date(-8640000000000000).toISOString(); // -271821-04-20T00:00:00.000Z
ISODate(new Date(-8640000000000000).toISOString()); // Wed Sep 03 2719 18:00:00 GMT-0600 (Mountain Daylight Time)
为什么第一个日期和最后一个日期有所不同?我可以看到,我清楚地东西,某处。另外,Mongo支持的最小和最大日期是多少?
编辑:有趣的是,这个工程按预期:
new Date(new Date(-8640000000000000).toISOString()); // Mon Apr 19 -271821 18:00:00 GMT-0600 (Mountain Daylight Time)
这只是一个创建某种最低日期的数字(具体来说,是4月19日,-271821日期)。自那以后,我一直在努力,但很好奇为什么会发生这种行为。 –
你需要1970年之前的日期,毫秒精度?我建议使用'新日期(0)',即'ISODate(“1970-01-01T00:00:00Z”)' – JeremyK
这是行得通的,是的。但是我从那以后改变了我的方法。这个问题更多的是出于对这种差异的好奇心,而不是试图解决我的问题。 –