使用JavaScript转换时间戳

时间:2012-05-29 06:34:53

标签: javascript date time

我有一个如下所示的时间戳:“2012-12-29T20:00:00Z”。将其转换为月份和日期的最佳方法是什么?类似于Dec 29

3 个答案:

答案 0 :(得分:1)

我认为没有一种简单的方法可以做到这一点。但是有一些图书馆用于此目的。喜欢这个

http://momentjs.com/

如果您不关心本地化问题,只需使用内部Date对象的原型。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

答案 1 :(得分:0)

使用内置的Date对象。

// Date.parse parses an ISO date
var d = new Date( Date.parse( '2012-12-29T20:00:00Z' ) );

console.log( d.toString() ); // "Sat Dec 29 2012 21:00:00 GMT+0100 (Paris, Madrid)"

console.log( d.toString().substr( 4, 6 ) ); // "Dec 29"

请注意,substr将始终有效,因为天数总是有3个字符,月份总是3个,日期总是2个。

如果您不想使用substr,则无法直接使用“Dec”。但是,您可以使用映射数组,如下所示:

console.log( d.getMonth() ); // 11

var mapping = [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ];

console.log( mapping[ d.getMonth() ] + ' ' + d.getDate() ); // "Dec 29"

这利用了数组索引从0开始的事实,就像d.getMonth()一样。

对于Date.parse的IE8支持,建议您使用以下垫片(来自ES5-shim):https://gist.github.com/303249

答案 2 :(得分:0)

您可以使用new Date("2012-12-29T20:00:00Z")将字符串转换为日期对象,在我的时区中生成Sat Dec 29 2012 21:00:00 GMT+0100 (W. Europe Standard Time)。有一些数据时间框架可供选择格式化,如datejs。我已经制作了一个简单的in this jsfiddle,可能是你的起点。我已经将ISO日期添加到示例中。它也适用于旧版浏览器。