我有一个RFC1123日期字符串,例如:'Mon, 01 Jan 0001 00:00:01 GMT'
我希望将此字符串解析为Date中的NodeJS。我以为new Date('Mon, 01 Jan 0001 00:00:01 GMT')会实现我想要的.但事实并非如此,当我检查得到的Date的内容时,我看到.toUTCString()给出了Mon, 01 Jan 2001 00:00:01 GMT。
我不知道解析函数是如何确定2001年的。
更奇怪的是,如果我使用ISO8601格式,然后做:new Date('0001-01-01T00:00:01Z').toUTCString(),我得到了Mon, 01 Jan 1 00:00:01 GMT --这正是我所期望的--但是如果我做了new Date('Mon, 01 Jan 1 00:00:01 GMT'),我仍然可以得到2001年的数据。
注意:我可以在另一种语言(C#)中处理这些相同的字符串,并得到我所期望的结果。
有人对如何正确地反序列化RFC1123日期在NodeJS中有任何建议吗?如果日期是“新的”(即超过1000年),事情似乎工作正常,但“旧的”日期似乎坏了,否则我错过了一些“额外的”,这是旧的日期所必需的。
编辑:从技术上看,RFC 1123/2822格式有1900年的下限--尽管Date允许我们低于这个值,所以我不确定是什么阻止了它支持<100年。
发布于 2015-10-13 01:33:32
您可以使用moment.js解析日期:
var dateFormat = 'ddd, DD MMM YYYY HH:mm:ss',
dateString = 'Mon, 01 Jan 0001 00:00:01 GMT';
var dateTime = moment.utc(dateString, dateFormat);https://stackoverflow.com/questions/33092295
复制相似问题