如何在JavaScript中将Unix时间戳转换为ISO 8601格式?

73
我有一个类似于 1331209044000 的时间戳,我想将其转换为 ISO 8601 时间戳。如何使用 JavaScript 进行转换?
我使用 jQuery 的 "timeago" 插件 - http://timeago.yarp.com/

1
请参考http://en.wikipedia.org/wiki/ISO_8601了解更多有关标准的信息。很抱歉,您只能基于“日期”组件构建字符串。 - Jacob
2
这看起来很有前途:https://dev59.com/k3E85IYBdhLWcg3w3Xhp - Xitalogy
2个回答

126

这是ECMAScript 5 - 有关兼容性和回退代码,请参见此处:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/toISOString - Xitalogy
30
请注意,Unix时间戳以秒为单位,但JavaScript计算毫秒。因此实际上应该使用new Date(timestamp * 1000).toISOString(); - Josef Kufner
4
这条留言是给未来的我看的:时间必须是毫秒! - Tom Smykowski

1

我使用了提供的链接,解决了问题。

// convert to ISO 8601 timestamp
function ISODateString(d){
    function pad(n){return n<10 ? '0'+n : n}
    return d.getUTCFullYear()+'-'
        + pad(d.getUTCMonth()+1)+'-'
        + pad(d.getUTCDate())+'T'
        + pad(d.getUTCHours())+':'
        + pad(d.getUTCMinutes())+':'
        + pad(d.getUTCSeconds())+'Z'
}

var d = new Date(parseInt(date));
console.log(ISODateString(d));

3
当然,此函数假定日期实际上处于祖鲁(GMT+0)时区。 - maerics

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接