Używam obiektu Data JavaScript do konwertowania milisekund na czytelny formatowany ciąg znaków minutes:seconds
. Potrzebuję tego, aby utworzyć zegar dla niestandardowego odtwarzacza wideo, w którym mój interfejs JS odbiera informacje o czasie trwania filmu w postaci milisekundy.getHours() zwracająca niepoprawną wartość
To było dość trywialne zadanie, zanim zdecydowałem się poprzeć możliwość filmowania dłuższego niż 59 minut. I wtedy napotkałem ten problem: kiedy przesyłam wartość milisekundy do konstruktora nowego obiektu Date, a następnie wywołuję getHours()
, to on zwróci coś, nawet jeśli liczba milisekund oznacza okres czasu krótszy niż godzina. Najprostszym sposobem, aby zobaczyć w akcji jest, aby go nakarmić, powiedzmy, 0.
będę oczekiwać, że zwraca 0, ale zawsze wraca 12 (13 w Operze, co czyni go jeszcze bardziej dziwne). Czy to normalne zachowanie, czy jest to błąd? Tak czy inaczej, w jaki sposób mogę niezawodnie wykryć, czy moja wartość milisekundy jest ograniczona do minut i sekund, czy też obejmuje godziny?
Dzięki.
UPD:
Przetestowałem go w Chrome 15 i Firefox 7 na OSX: sam wynik, jak na powyższym zrzucie ekranu. Nie wiem, jak korzystać z konsoli Opera Dragonfly, ale z tego, co widzę, dzieje się w Operze, o wartości 13 dla getHours()
.
Nie chcesz używać tutaj konstruktora 'Date'. 'new Date (n)' zwraca obiekt 'Date' z datą ustawioną na 1 stycznia 1970 +' n' milisekund, co z pewnością nie jest tym, czego potrzebujesz ... –
@ ŠimeVidas, więc jaka byłaby dobra alternatywa? – Arnold
Napisałbym swoją własną funkcję. –