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

DoT*_*Evo 8 javascript datetime date

谷歌日历向我投掷rfc3339,但我所有的约会时间都是自1970年1月以来的那几毫秒.

rfc3999:

2012-07-04T18:10:00.000+09:00
Run Code Online (Sandbox Code Playgroud)

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

1341346502585
Run Code Online (Sandbox Code Playgroud)

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

Ry-*_*Ry- 12

Date.parse 应该管用:

Date.parse('2012-07-04T18:10:00.000+09:00')
Run Code Online (Sandbox Code Playgroud)

但是,Date.parse众所周知,浏览器不可靠,因此您需要彻底测试它.如果它不起作用,那么这是一个函数:

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 = new Date().getTimezoneOffset() + tzHour * 60 + tzMin;

    return new Date(year, month - 1, day, hour, minute - tzOffset, second, msec);
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢你的作品,就像一个魅力.我使用正则表达式的巨大代码,它停止为我工作,然后我花了很多时间谷歌搜索和阅读这里,但没有,直到现在.我在浏览器扩展中使用它,因此它不需要是跨平台的.谢谢 (2认同)

Spu*_*ley 5

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

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

如果你经常使用日期,你会想要使用其中一个库; 每次滚动自己的功能都要少得多麻烦.

希望有所帮助.

  • 代码示例会很棒。 (2认同)