2011-01-13 7 views
15

Jestem pewien, że istnieje powód, dla którego muszę dodać trzy zera do każdego znacznika czasu Uniksa w JavaScript, aby uzyskać poprawną datę. Czy możesz powiedzieć mi dlaczego? Czy jest to tak proste jak milisekundy od epoki do sekund?Dlaczego muszę mnożyć znaczniki czasu unix przez 1000 w JavaScript?

+1

Ponieważ używają różnych jednostek miary? – spender

+0

Dziękuję wszystkim. Wiedziałem, że musi to być coś logicznego. Następne pytanie będzie dotyczyło decyzji projektowych w okolicach milisekund w porównaniu z sekundami, biorąc pod uwagę pół-niekonsekwencję. – buley

+0

Co powiesz na pierwsze pytania i odpowiesz na pytanie, które najlepiej rozwiązało Twoje pytanie? – Phrogz

Odpowiedz

24

Ponieważ JavaScript wykorzystuje wewnętrznie milisekundy, a normalne znaczniki czasu UNIX są zwykle podawane w sekundach.

+0

Czy to nie będzie równe utracie danych? Błędy zaokrąglania? – Edward

+0

Mnożenie nie powinno niczego stracić, nawet Nietypowy typ 'Number' powinien być w stanie to zrobić bez błędów zaokrągleń. Podział z drugiej strony będzie oczywiście tracił przynajmniej część milisekundy, której zwykłe znaczniki UNIX nie mogą wyrazić tak czy inaczej. – deceze

4

Javascript używa liczby milisekund od epoki. Uniwersalny znacznik czasu to sekundy od epoki.

Stąd konieczność konwersji uniksowy znacznik czasu do millseconds przed użyciem go w JavaScript

3

czas uniksowy to liczba sekund od początku epoki (1 Jan 1970). W JavaScript obiekt Date oczekuje liczby milisekund od epoki, stąd 1000-krotna różnica.

Powiązane problemy