2011-07-15 17 views

Odpowiedz

16
var match = '2011-07-15 13:18:52'.match(/^(\d+)-(\d+)-(\d+) (\d+)\:(\d+)\:(\d+)$/) 
var date = new Date(match[1], match[2] - 1, match[3], match[4], match[5], match[6]) 
// big gotcha -------------------------^^^ 
// month must be between 0 and 11, not 1 and 12 
console.log(date); 
console.log(date.getTime()/1000); 
+0

dude dostaję znacznik czasu, ale nie jest on prawidłowy. kiedy podaję "2011-07-15 14:54:12" Otrzymuję znacznik czasu jako "1313434452". Ale kiedy sprawdzam to za pomocą "http://www.onlineconversion.com/unix_time.htm" jego pokazuje datę konwertowaną na czas do Mon, 15 sierpnia 2011 07:48:52 GMT, która jest zła. –

+1

Ups. Zaktualizowałem swoją odpowiedź (patrz: gotcha). –

+0

Dzięki stary .. :-) –

-3

ta zwraca liczbę milisekund od Jan. 1 1970: Date.parse('2011-07-15 10:05:20')

Wystarczy podzielić przez 1000, aby uzyskać sekund zamiast milisekund ..

+0

date = new Date.parse ('2011-07-15 10:05:20')/100 jest tym co robisz ... Otrzymuję błąd NaN –

+0

'console.log (Date.parse ('2011 -07-15 10:05:20 ')); 'to' NaN', [to nie jest uznany format wejściowy] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse). –

+0

Muszą różnić się w zależności od przeglądarki, a następnie. Przetestowałem to w Chrome, bez problemów (http://jsfiddle.net/nslr/v2xQ6/) –

1

Miesięcy rozpocząć od 0, w przeciwieństwie do dni! Więc to będzie działać idealnie (tested)

function dateToUnix(year, month, day, hour, minute, second) { 
    return ((new Date(Date.UTC(year, month - 1, day, hour, minute, second))).getTime()/1000.0); 
} 
+0

Wielkie dzięki :-) –

6

pan przyjął odpowiedź, ale znacznie prostsze wyrażenie regularne można stosować:

function stringToDate(s) { 
    s = s.split(/[-: ]/); 
    return new Date(s[0], s[1]-1, s[2], s[3], s[4], s[5]); 
} 

alert(stringToDate('2011-7-15 20:46:3')); 

Oczywiście ciąg wejściowy musi być poprawna Format.

12

następujący kod będzie pracować dla formatu YYYY-MM-DD hh:mm:ss:

function parse(dateAsString) { 
    return new Date(dateAsString.replace(/-/g, '/')) 
} 

Ten kod konwertuje YYYY-MM-DD hh:mm:ss do YYYY/MM/DD hh:mm:ss który łatwo analizowany przez Date konstruktora.

+0

Ta odpowiedź jest najlepszym podejściem. Dzięki! –

Powiązane problemy