2012-05-15 13 views
17

Mam ciąg znaków zawierający 8 cyfr reprezentujących datę. Na przykład:Konwertuj zwracany ciąg (RRRRMMDD) na datę

20120515 

Chciałbym porównać ją z dzisiejszą datą, utworzony w ten sposób:

var currentDate = new Date(); 

Jak mogę przekonwertować „8-cyfrowy datę ciąg” do odpowiedniego formatu daty w aby porównać go z currentDate?

+1

Jaki język programowania? – Julian

+0

Oczywiście to jest twoje pierwsze pytanie, ale jakiego języka programowania używasz? – Kaf

+0

Och, przepraszam. JavaScript. – kirbyjwilson

Odpowiedz

27

Użyj metody podciągu i podciągu z 4 elementów i przypisz ją do nowej daty na rok. Następnie podciągaj dwa elementy jednocześnie i przechowuj odpowiednio miesiąc i datę.

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(); 

Teraz możesz porównać te dwie daty z normalnymi operatorami.

+0

Tak, to ma sens. Dzięki! – kirbyjwilson

+0

@kirbyjwilson Pamiętaj, aby zaznaczyć tę odpowiedź jako poprawną, jeśli rozwiązała problem. – jurgemaister

+1

Myślę, że musisz dodać jeden do drugiego parametru przekazanego do [.substring() '] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/substring) - wyodrębnia się z pierwszy indeks do _, ale nie zawierający drugiego indeksu, więc '.strumping (0,3)' przyjmuje tylko pierwsze trzy znaki ... – nnnnnn

13

Jeśli chcesz mieć małą bibliotekę dat, możesz użyć 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

geniusz! dla przyszłych czytelników może być powiązany: 'moment(). format()' –

+0

co to jest Moment.js ... czy jest to wstępnie zdefiniowana biblioteka? –

+0

@saidesh, sprawdź http://momentjs.com/ – timrwood