2013-07-03 1 views
6

Я получаю строчную переменную, имеющую дату в формате 6/1/2012, я хочу преобразовать ее в 01 Jun 2012. JS FIDDLE DEMOJavaScript преобразовать строку в Date с форматом (dd mmm yyyy) i.e. 01 июня 2012

код Я попробовал:

var t_sdate="6/1/2012";     
var sptdate = String(t_sdate).split("/"); 
var myMonth = sptdate[0]; 
var myDay = sptdate[1]; 
var myYear = sptdate[2]; 
var combineDatestr = myYear + "/" + myMonth + "/" + myDay; 

var dt = new Date(combineDatestr); 
var formatedDate= dt.format("dd mmm yyyy") 
alert(formatedDate); 

Получение выход как 01 000 2012, требуется, как 01 Jun 2012

+0

Uncaught TypeError: Object [object Date] не имеет метода 'format', это ошибка, зарегистрированная на консоли. Код, который у вас есть, будет работать, если вы включите плагин dateformat-js в свой код. –

+0

Я не использую никакого внешнего js-файла, можно ли это сделать без использования внешнего файла –

+0

Посмотрите на это: http://stackoverflow.com/questions/1056728/formatting-a-date-in-javascript?rq=1 – alun

ответ

8

Попробуйте это:

function getFormattedDate(input) { 
    var pattern = /(.*?)\/(.*?)\/(.*?)$/; 
    var result = input.replace(pattern,function(match,p1,p2,p3){ 
     var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; 
     return (p2<10?"0"+p2:p2) + " " + months[(p1-1)] + " " + p3; 
    }); 

    alert(result); 
} 

getFormattedDate("6/1/2013"); 

Jsfiddle demo

+0

Идеальное решение, без добавления 'external js' –

+0

Локализованное решение, которое работает только для en locale. –

+0

есть ли способ распечатать имя дня вместе с тем же кодом? – Madhav

-1
"формат"

не является стандартным методом Date объекта

-4
dt.format("dd MMM yyyy") 

Используйте заглавные буквы.

+0

Как правильно указывает guy777, стандартный JavaScript не имеет функции 'format'. – Amadan

1
return $.datepicker.formatDate('dd-M-yy', new Date(dateVal)); //01-Dec-2014 
+3

Здравствуйте, и добро пожаловать в переполнение стека. В общем случае, если теги не включают 'jquery' (или другую библиотеку), ответы должны воздерживаться от использования библиотек для решения проблемы (или они могут предположить, что использование библиотеки будет проще). Здесь вы просто предполагаете, что OP использует jQueryUI; ответ был бы более полезен, если бы вы предложили, чтобы jQueryUI обладал этой классной функциональностью, но ответы на все библиотеки еще не были предпочтительнее (особенно учитывая вопрос о вопросе OP). Также взгляните на справку по форматированию стека: введите 4 символа для блоков кода (или установите обратные ссылки для встроенного кода). – Amadan

2

Поскольку другие пользователи уже упоминали, что "format" не стандартный метод Date объекта. Вы можете сделать это без использования какого-либо метода форматирования (даже если существует какое-либо)

var t_sdate = "6/1/2012"; 
var sptdate = String(t_sdate).split("/"); 
var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; 
var myMonth = sptdate[0]; 
var myDay = sptdate[1]; 
var myYear = sptdate[2]; 
var combineDatestr = myDay + " " + months[myMonth - 1] + " " + myYear; 

alert(combineDatestr); 

JsFiddle Demo