2012-05-29 6 views

ответ

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, нет никакого способа, чтобы получить «Дек» прямо. Вы можете играть с массивом отображения тем не менее, как следующее:

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, я предлагаю вам использовать следующую подкладку (от ES5-shim): https://gist.github.com/303249

+0

Спасибо. Мне нравится этот подход, потому что он легкий, и я не хочу включать в него всю библиотеку. Будет ли это работать в IE? Если нет, есть ли такой подход? –

+0

Он работает в IE, нет причин, по которым он не должен. Массивы и индексы везде одинаковы. –

+0

Хм, хорошо. Но @ panda-34 сказал, что «синтаксический анализ дат ISO происходит только в версии 6 ecma, что означает, что IE 8 не поддерживает его»? –

1

Я не думаю, что есть простой способ сделать это. но для этой цели есть несколько библиотек. Как этого

http://momentjs.com/

И если вы не заботитесь о проблеме локализации, просто использовать прототип внутреннего объекта Дейта.

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

+0

Я бы использовал объект Date, но мне предоставляется эта метка времени API, поэтому я должен ее преобразовать так или иначе. –

+0

Вы имеете в виду от даты ISO до внутреннего типа даты? 'new Date ('2012-12-29T20: 00: 00Z')' будет анализировать его. – xiaoyi

+0

Извините, так как бы я использовал этот объект, чтобы преобразовать его в мой предпочтительный формат? Скажите «Дата месяца»? –

0

Вы можете преобразовать строку в объект Date, используя 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 к примерам. Он также работает для старых браузеров.

+0

Вам действительно нужна фреймворк, когда достаточно массива сопоставления? ; o) –

+0

Нет, если вы хотите только «29 декабря» из строки даты. Я просто указывал на возможности – KooiInc

Смежные вопросы