如何将 RFC 3339 中的日期转换为 javascript 日期对象(自 1970 年以来的毫秒)

How to convert date in RFC 3339 to the javascript date object(milliseconds since 1970)

本文关键字:日期 1970 javascript RFC 3339 转换 对象      更新时间:2023-09-26

谷歌日历向我抛出rfc3339,但我所有的日期都是自1970年1月以来的毫秒。

RFC3999:

2012-07-04T18:10:00.000+09:00

JavaScript 当前时间: (new Date()).getTime():

1341346502585

我更喜欢毫秒,因为我只处理倒计时而不是日期。

该格式的日期时间,带有 3 个小数位和一个"T",在传递给 Date.parseDate 构造函数时具有明确定义的行为:

console.log(Date.parse('2012-07-04T18:10:00.000+09:00'));
// 1341393000000 on all conforming engines

但是,您必须小心始终提供符合 JavaScript 规范的输入,否则您可能会在不知不觉中回退到实现定义的解析,由于实现定义,跨浏览器和环境都不可靠。对于其他格式,可以使用正则表达式进行手动解析等选项:

var googleDate = /^('d{4})-('d{2})-('d{2})T('d{2}):('d{2}):('d{2})'.('d{3})([+-]'d{2}):('d{2})$/;
function parseGoogleDate(d) {
    var m = googleDate.exec(d);
    var year   = +m[1];
    var month  = +m[2];
    var day    = +m[3];
    var hour   = +m[4];
    var minute = +m[5];
    var second = +m[6];
    var msec   = +m[7];
    var tzHour = +m[8];
    var tzMin  = +m[9];
    var tzOffset = tzHour * 60 + tzMin;
    return Date.UTC(year, month - 1, day, hour, minute - tzOffset, second, msec);
}
console.log(parseGoogleDate('2012-07-04T18:10:00.000+09:00'));

或功能齐全的库,如 Moment.js。

你可以尝试两个Javascript日期库:

  • 日期.js

  • 瞬间.js

这两者都将为您提供函数,允许您以几乎任何格式解析和生成日期。

如果你经常使用日期,你会想要使用这些库之一;这比每次都滚动自己的函数要麻烦得多。

希望有帮助。