2013-10-04 2 views
0

Я ищу легкий способ сделать следующий формат даты более удобочитаемым.Javascript простая конверсия даты

04OCT2013 

Я бы идеально, как к нему выход:

4 October 2013 

Любая помощь будет очень признателен, спасибо!

+0

Вы попробовали что-нибудь? – lelloman

+0

Все, что я пробовал сам, было немного громоздким:/ – ghghjk

+0

проверить здесь на дату functios http://www.w3schools.com/jsref/jsref_obj_date.asp –

ответ

0

Вы можете попробовать с moment.js

<script src="//cdn.jsdelivr.net/momentjs/2.0.0/moment.min.js"></script> 

var date = new Date("04OCT2013"); 
var newDate = moment(date).format("DD MMMM YYYY"); 

alert(newDate); 

Js Fiddle Demo

+0

Мне нужно нажать переменную через это (var de_date = flightInfo [0] [4];) – ghghjk

+0

Не работает: NaN undefined 0NaN – ghghjk

+0

У вас есть этот скрипт 'moment.min.js'? – Sachin

0
var months= [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ]; 
var d = new Date(); 
var desc = d.getDate() + ' ' + months[d.getMonth()] + ' ' + d.getFullYear(); 

Но я хотел бы предложить date.js или даже лучше moment.js.

0
var now = new Date(); 
var monthNamesL = [ "January", "February", "March", "April", "May", "June", 
        "July", "August", "September", "October", "November", "December" ], 
    monthNamesS = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", 
        "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ]; 

var dateFmtd = monthNamesL[now.getMonth()] + ' ' + now.getDay() + ', ' + now.getFullYear(); 
alert(dateFmtd); 
+0

OP хочет гораздо более общий день месяца, а не ориентироваться на США. – RobG

1

Прежде всего вам необходимо проанализировать вашу строку, а затем отформатировать ее части. Вы можете использовать некоторые полноценные libary для этого (there are a few), или написать эти две простые функции себя:

var shortMonths = ["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dez"], 
    longMonths = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; 
function parse(datestring) { 
    var date = parseInt(datestring.slice(0,2), 10), 
     month = shortMonths.indexOf(datestring.slice(2,5).toLowerCase()), 
     year = parseInt(datestring.slice(5,9), 10); 
    return new Date(year, month, date); 
} 
function format(date) { 
    return [date.getDate(), longMonths[date.getMonth()], date.getFullYear()].join(" "); 
} 

> format(parse("04OCT2013")) 
"4 October 2013" 
+0

Как мне заставить это работать с моей исходной переменной? – ghghjk

+0

Это может быть более «легкий», чтобы заменить 'parseInt' на' + '. ;-) – RobG

+0

Не работает (alert (format (parse (de_date)));) – ghghjk

1

Вдохновленный ответ Берги в:

function formatDate(s) { 
    s = s.toLowerCase().match(/\d+|\D+/g); 
    var months = {jan:'January', feb:'February', mar:'March', apr:'April', 
       may:'May', jun:'June', jul:'July', aug:'August', sep:'September', 
       oct:'October', nov:'November', dec:'December'}; 
    return +s[0] + ' ' + months[s[1]] + ' ' + s[2]; 
} 

formatDate('04OCT2013'); // 4 October 2013 
formatDate('14NOV2015'); // 14 November 2015 
0

формат этого нужно просто колонку немного и используйте встроенный в Date type с синтаксическим разложением:

var myString = "04OCT2013"; 

затем подстроку из первых символов, а последние 4 и месяц, так что вы можете использовать встроенный в парсер, как показано ниже:

Date.parse("Aug 9, 1995"); 

Нет необходимости создавать свои собственные массивы месяцев.

+0

OP, похоже, хочет переформатировать строку. Или требуется объект Date? Во всяком случае, полагаясь на функцию Date для правильного синтаксического анализа нестандартной строки, она ненадежна и, как ожидается, не будет работать, по крайней мере, в некоторых браузерах. – RobG

+0

@RobG I aqm предлагает вам форматировать строку, а затем использовать парсер – NimChimpsky

+0

Я понимаю ваш подход. Тем не менее, OP, похоже, хочет отформатированную строку, ваш ответ вернет значение времени ECMAScript или вызовет ошибку, в зависимости от реализации. Кроме того, нет [типа даты] (http://ecma-international.org/ecma-262/5.1/#sec-8), хотя есть собственный объект Date, который может быть вызван как функция или конструктор. – RobG

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