为什么转换时JavaScript中的日期不匹配?

为什么转换时JavaScript中的日期不匹配?,javascript,momentjs,Javascript,Momentjs,为什么javascript中的日期不匹配。我得到的是毫秒“-2208988800000”。我用这样的时间转换了这个 moment(new Date(-2208988800000).toUTCString()).format('DD-MMM-YYYY') 给出输出“01-Jan-1900”(正确) 现在我再次尝试获得相同的长值或毫秒 moment(new Date("01-Jan-1900")).format('x') "-2209008070000" 为什么价值不匹配?“-220900807

为什么javascript中的日期不匹配。我得到的是毫秒“-2208988800000”。我用这样的时间转换了这个

moment(new Date(-2208988800000).toUTCString()).format('DD-MMM-YYYY')
给出输出“01-Jan-1900”(正确)

现在我再次尝试获得相同的长值或毫秒

moment(new Date("01-Jan-1900")).format('x')
"-2209008070000"
为什么价值不匹配?“-2209008070000”和“-2208988800000”不相同并不是每个浏览器都可以使用的。例如,Firefox会输出
无效日期
日期
构造函数有很多怪癖,这正是为什么你应该使用像Moment.js这样的库来解析日期和时间字符串

有关更多详细信息,请参阅

我认为您在转换为DD-MMM-YYYY时损失了几个小时

console.log(瞬间(新日期(-2208988800000).toutString()).format('DD-MMM-YYYY HH:mm:ss'))
//上面行的输出被输入到下面。
console.log(moment.parseZone(新日期(“1899年12月31日19:00:00”))。格式('x'))


我得到了正确的值,我可以想象设置
新日期
会增加地区时间(我在英国,因此我的时间是
周一1月1日1900 00:00:00 GMT+0000
)我在印度…但是毫秒是不同的当然毫秒是不同的;只有千分之一的几率是相同的。当你创建日期而不指定一天中的时间值(包括毫秒)时,根据您自己的计算机使用当前时间。hwo获得相同的长字符串?您可以使用完整的ISO格式的时间字符串,或者使用矩API提供日期字符串和格式字符串,这通常是首选。(另外,我可能对
new date()有错误)
使用当前时间;一些平台可能会这样做,但其他平台可能不会这样做;
new Date()
的问题在于平台接受的内容不同。)@stijin我将如何使用Moment获得相同的价值你应该发布一个新问题(或者最好是查看Moment.js文档,它非常全面)如果您需要帮助。让我们举一个例子,我从服务中获得“-2208988800000”。并且在UI“01-Jan-1900”中显示,现在我想发送相同的长消息string@user944513你是将其解析为UTC还是本地时间?在UTC中..如果我得到