如何将RFC 3339中的日期转换为javascript日期对象(自1970年以来的毫秒) [英] How to convert date in RFC 3339 to the javascript date object(milliseconds since 1970)

查看:621
本文介绍了如何将RFC 3339中的日期转换为javascript日期对象(自1970年以来的毫秒)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



rfc3999:

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

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

  1341346502585 

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

解决方案

日期.parse 应该工作:

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

然而 c $ c> Date.parse 在浏览器中是不可靠的,所以你需要彻底测试。如果它不起作用,那么这里有一个功能:

  var googleDate = / ^(\d {4}) - (\d {2}) - (\d {2})T(\d {2}):( \d {2}):( \d {2})\。(\ d {3})([+  - ] \d {2}):( \d {2})$ /; 

函数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);
}


Google calendar throws at me rfc3339, but all my dates are in those milliseconds since jan 1970.

rfc3999:

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

javascript current time: (new Date()).getTime():

1341346502585

I prefer the the milliseconds because I only deal in countdowns and not in dates.

解决方案

Date.parse should work:

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

However, Date.parse is notoriously unreliable across browsers, so you'll want to test it thoroughly. If it doesn't work, then here's a function:

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

这篇关于如何将RFC 3339中的日期转换为javascript日期对象(自1970年以来的毫秒)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆