首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将RFC3339中的日期转换为javascript date对象(自1970年以来的毫秒)

问如何将RFC3339中的日期转换为javascript date对象(自1970年以来的毫秒)
EN

Stack Overflow用户
提问于 2012-07-04 04:24:37
回答 2查看 23.9K关注 0票数 11

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

rfc3999:

代码语言:javascript
复制
2012-07-04T18:10:00.000+09:00

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

代码语言:javascript
复制
1341346502585

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-04 04:27:00

该格式的Datetimes在传递给Date.parse或Date构造函数时具有well-defined behaviour:

​

代码语言:javascript
复制
console.log(Date.parse('2012-07-04T18:10:00.000+09:00'));
// 1341393000000 on all conforming engines

​

但是,必须注意始终提供符合JavaScript规范的输入,否则可能会在不知不觉中退回到实现定义的解析,因为实现定义的解析在浏览器和环境中并不可靠。对于其他格式,有一些选项,比如使用正则表达式进行手动解析:

​

代码语言: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这样功能齐全的库。

票数 18
EN

Stack Overflow用户

发布于 2012-07-04 04:46:12

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

这两个函数都允许您以几乎任何格式解析和生成日期。

如果您经常处理日期,您将希望使用这些库中的一个;这比每次滚动您自己的函数要麻烦得多。

希望这能有所帮助。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11318634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档