0

我有一个看起来像这样的时间戳:“2012-12-29T20:00:00Z”。将其转换为月份和日期的最佳方法是什么?类似的东西Dec 29

4

3 回答 3

1

我不认为有一个简单的方法可以做到这一点。但是有一些为此目的的库。像这个

http://momentjs.com/

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

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

于 2012-05-29T06:37:08.763 回答
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().

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

于 2012-05-29T06:52:51.043 回答
0

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

于 2012-05-29T06:55:16.040 回答