2011-12-24 4 views
2

Я пытаюсь преобразовать «1983-24-12» в 24 декабря 1983 года с помощью Javascript.Преобразование yyyy-mm-dd в другой формат даты в Javascript

У нас есть какая-либо готовая функция в Javascript, которая делает это преобразование таким же, как simpledateformat в Java?

Я стараюсь не брать месяцы в массивы, а затем выполнять манипуляции.

Мой код такой, как показано ниже.

//For Date Format 
    months = ["", "January", "February", "March", "April", "May", "June",   "July", "August", "September", "October", "November", "December"];  
    dob = responseObj.data.personDetail.birthDate.split('-'); 
    month = months[dob[1]]; 
    responseObj.data.personDetail.birthDate = month +" "+dob[2] +","+dob[0]; 

Просьба помочь.

+0

Существует метод * Date.prototype.toLocaleString *, но сначала вам нужно преобразовать строку в дату (не сложно, а нужно 2 или 3 строки кода), а затем вызов * toLocaleString * ,И тогда этот метод зависит от реализации, поэтому вы получаете то, что возвращает браузер, что отличается в каждом браузере. Многие также игнорируют локальные настройки, поэтому верните США-ориентированный месяц, день, год, даже если системные настройки предназначены для дня, месяца, месяца. Таким образом, метод, который вы используете, уже, вероятно, так же хорош, как и он. – RobG

ответ

2

EDIT: Поскольку вы упомянули, что вы используете Сенч, вы можете использовать Ext.Date добавить расширенное форматирование даты и синтаксический анализ:

Набора полезных статических методов для борьбы с датой Обратите внимание, что если Ext.Date требуется и загружен, он скопирует все методы/свойства для этого объекта для удобства.

Вы можете найти более подробную информацию здесь: http://docs.sencha.com/ext-js/4-0/#!/api/Ext.Date

Два метода, которые могут оказаться полезными являются parse и format


В качестве альтернативы, DatePicker виджет Jquery UI, реализует очень надежные даты парсер и форматировщик , который может использоваться в вашем собственном коде:

var parsedDate = $.DatePicker.parseDate("yy-m-d", "1983-24-12"); 
var outputString = $.DatePicker.formatDate("MM d, yy", parsedDate); 
// outputString = "December 24, 1983" 

Соответствующие функции здесь: parseDate и formatDate.

Есть одна проблема, однако, чтобы использовать это, вам придется включать как JQuery, так и JQuery UI в качестве скриптов в вашем коде, что, вероятно, немного чрезмерно для того, что вам нужно, а другие ответы могут, возможно, соответствовать вашим потребностям лучше.

+0

Я работаю с Sencha :) – Gendaful

+0

@HPK - Я отредактировал свой ответ, я добавил немного об использовании Sencha Ext JS, который может сработать для вас :-) –

+0

Я использовал birthDate = date.dateFormat ("F d, Y "); // Sencha DateObject. Благодарю. – Gendaful

2

Это может помочь: Date Format Conversion

+0

Я избегаю попытки поместить любую библиотеку в свой код, который будет излишне увеличивать размер моего мобильного сайта. Я пытаюсь, если sencha предоставляет любую помощь .. – Gendaful

+0

Тогда вы могли бы показать некоторые из своих кодов ... что вы пробовали ..? –

+0

Hi Sudhir. Я добавил код выше. Спасибо – Gendaful

2

Если я правильно Вас понял, вы пытаетесь переформатировать дату, на которую быстрый поиск Google принес этот , который выглядит так, как вы хотите.

7

Если вы не хотите использовать библиотеку, почему бы просто не разделить строку даты и не придумать свою собственную дату?

var str_date = "1983-24-12", 
    arr_date = str_date.split('-'), 
    months = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; 

alert(months[arr_date[2]] + ' ' + arr_date[1] + ', ' + arr_date[0]); 

Демо: http://jsfiddle.net/9xeBZ/

JavaScript имеет Date() объект: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date

Проблема заключается в том, что объект JavaScript Date() не возвращает строковое представление месяца. Поэтому в какой-то момент вам придется самостоятельно создать эту логику. Также формат, который вы опубликовали («1983-24-12»), является недопустимым форматом для синтаксического анализа объекта Date().

+0

Привет, Джаспер, я пробовал то же самое, но стараюсь избегать использования массива. У нас есть какая-то упрощенная форматная функция форматирования, которая помогает нам в этом случае? Я делаю мобильный сайт с рамкой Sencha – Gendaful

+0

@HPK Я обновил свой ответ с абзацем в конце. Также здесь приведена ссылка на ответ SO, в котором показано, как добавить эту функцию на ваш сайт с помощью 'Date.prototype': http://stackoverflow.com/a/1643506/752738 – Jasper

+1

BTW, * Date.prototype.toLocaleString * is зависимые от реализации, некоторые браузеры возвращают полное имя месяца (например, Safari), а некоторые нет. – RobG

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