2012-05-15 6 views
17

У меня есть строка, которая содержит 8 цифр, которые представляют дату. Например:Преобразовать возвращенную строку (YYYYMMDD) на дату

20120515 

Я хотел бы сравнить его с сегодняшней датой, создана таким образом:

var currentDate = new Date(); 

Как я могу преобразовать «8 цифр даты строка» в подходящий формат даты в сравнить его с currentDate?

+1

Какой язык программирования? – Julian

+0

Очевидно, это ваш первый вопрос, но какой язык программирования вы используете? – Kaf

+0

О, извините. JavaScript. – kirbyjwilson

ответ

27

Используйте метод подстроки и подстроку с 4 элементами и присвойте ей новую дату года. Затем подстройте два элемента за раз и сохраните месяц и дату соответственно.

var dateString = "20120515"; 
var year  = dateString.substring(0,4); 
var month  = dateString.substring(4,6); 
var day   = dateString.substring(6,8); 

var date  = new Date(year, month-1, day); 
var currentDate = new Date(); 

Теперь вы можете сравнить две даты с нормальными операторами.

+0

Да, это имеет смысл. Благодаря! – kirbyjwilson

+0

@kirbyjwilson Не забудьте отметить этот ответ как правильный, если он решил вашу проблему. – jurgemaister

+1

Я думаю, вам нужно добавить один ко второму параметру, переданному в ['.substring()'] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring) - он извлекает из первый индекс до _, но не включающий второй индекс, поэтому '.substring (0,3)' принимает только первые три символа ... – nnnnnn

13

Если вы хотите создать небольшую библиотеку, вы можете использовать moment.js.

var a = moment("20120515", "YYYYMMDD"); 
// then use any of moment's manipulation or display functionality 
a.format("MMM Do YYYY"); // May 15th 2012 
a.fromNow(); // 14 hours ago 
a.calendar(); // Today at 12:00 AM 
+1

гений! для будущих читателей, он может быть прикован: 'moment(). format()' –

+0

что это за Moment.js ... это pre defined lib? –

+0

@saidesh, проверьте http://momentjs.com/ – timrwood

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