我有一个如下所示的时间戳:“2012-12-29T20:00:00Z”。将其转换为月份和日期的最佳方法是什么?类似于Dec 29
。
答案 0 :(得分:1)
我认为没有一种简单的方法可以做到这一点。但是有一些图书馆用于此目的。喜欢这个
如果您不关心本地化问题,只需使用内部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日期添加到示例中。它也适用于旧版浏览器。