2013-06-28 11 views
29

Próbuję przekonwertować milisekund do daty przy użyciu javascript używając:new Date (milisekund) zwraca Nieprawidłowa data

new Date(Milliseconds); 

konstruktora, ale gdy daję mu wartość milisekund powiedzieć 1372439683000 zwraca nieprawidłową datę. Jeśli przejdę na numer site that converts milliseconds to date, zwróci poprawną datę.

Jakieś pomysły, dlaczego?

+1

'alert (nowa data (1372439683000));' działa dla mnie. Co dokładnie rozumiesz przez "nieważną datę", jaki masz wynik? –

+1

@Pekka 웃 Program OP otrzymuje obiekt 'Date', który zawiera łańcuch" Nieprawidłowa data ". (np. wypróbuj 'alert (new Date (" "))') – apsillers

Odpowiedz

64

Nie używasz numeru, używasz string, który wygląda jak liczba. Według MDN, kiedy przechodzą ciąg do Date, że spodziewa

format rozpoznawany przez metodę parse (IETF RFC 2822 zgodnych znaczników czasu).

Przykładem takiego łańcucha jest „December 17, 1995 03:24:00”, ale jesteś przejazdem w ciąg, który wygląda jak „1372439683000”, który nie jest w stanie być analizowany.

Konwersja Milliseconds do numeru przy użyciu parseInt lub jednoskładnikowa +:

new Date(+Milliseconds); 
new Date(parseInt(Milliseconds,10)); 
+0

'new Date (929397621000)' w Developer Tools zwraca poprawnie sformatowany ciąg daty 'Mon Jun 14 1999 15:00:21 GMT-0700 (PDT) 'ale gdy próbuję sprawdzić obiekt, pokazuje" Nieprawidłowa data ". W rzeczywistym kodzie, w którym jest on używany, tworzy również niepoprawną datę. – Michael

+1

@Michael Wydaje się, że jest to inny problem niż opisany tutaj. Czy robisz 'console.dir (new Date (929397621000))'?Jeśli tak, zobacz "__proto__: Invalid Date" wewnątrz tego wystąpienia jest prawidłowe (lub co najmniej zaskakujące) zachowanie. Prototyp 'Date' * * jest * nieprawidłową datą; poprawne informacje o dacie istnieją w 'Date' * instancjach *, a nie na prototypach. – apsillers

+0

Wpisuję wyrażenie bezpośrednio jako zegarek w narzędziach programistycznych Chrome. Mój kod zasadniczo robi to samo. Ponieważ nazywam 'new', który powinien wytworzyć prawidłowy obiekt Date, tak? O dziwo, nawet 'new Date()' tworzy niepoprawną datę (że debugger może dziwnie poprawnie napisać łańcuch), którego nie mogę sprawdzić elementów (ponieważ pokazuje tylko "Nieprawidłowa data"), więc może to problem z kokpitu. – Michael

3

Funkcja Date jest wielkość liter:

new Date(Milliseconds); 
1

zamiast tego

new date(Milliseconds); 

stosowania tego

new Date(Milliseconds); 

swoją wypowiedź daje termin nie jest określony błędu

0

ja otrzymuję ten błąd wynika z innego powodu.

Czytam klucz z redis, którego wartość to json.

client.get(someid, function(error, somevalue){});

Teraz starałem się uzyskać dostęp do pól wewnątrz somevalue (który jest ciągiem), jak somevalue.start_time bez parsowania do obiektu JSON. To było zwracanie "niezdefiniowane", które po przejściu do konstruktora daty, new Date(somevalue.start_time) zwraca "Nieprawidłowa data".

Po raz pierwszy użycie JSON.parse(somevalue) do uzyskania obiektu JSON przed uzyskaniem dostępu do pól wewnątrz json rozwiązało problem.

Powiązane problemy