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

时间:2012-07-03 20:24:37

标签: javascript datetime date

谷歌日历向我投掷rfc3339,但我的所有日​​期都是自1970年1月以来的那几毫秒。

rfc3999:

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

javascript当前时间:(新日期())。getTime():

1341346502585

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

2 个答案:

答案 0 :(得分:12)

Date.parse应该有效:

Date.parse('2012-07-04T18:10:00.000+09:00')

然而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);
}

答案 1 :(得分:5)

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

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

如果您经常使用日期,则需要使用其中一个库;与每次滚动自己的功能相比,它的麻烦要少得多。

希望有所帮助。