getHours() gibt falschen Wert

Bin ich mit JavaScript-Date-Objekt zu konvertieren Millisekunden in ein lesbares minutes:seconds formatierten string. Ich brauche es, erstellen Sie einen timer für eine benutzerdefinierte video-player, wo meine JS-interface empfängt die video-Dauer-info als einer Millisekunde Wert.

Es ist schon eine ziemlich triviale Aufgabe, vor der ich mich entschlossen, die Möglichkeit ein video mehr als 59 Minuten. Und dann traf ich dieses problem: wenn ich senden Sie eine Millisekunde Wert um die neue Date-Objekt, Konstruktor, und rufen Sie dann getHours(), wird es wieder etwas, auch wenn die Anzahl der Millisekunden steht für einen Zeitraum, der weniger als eine Stunde. Der einfachste Weg, um dies in Aktion zu sehen ist, füttern es, sagen wir, 0.

getHours() gibt falschen Wert

Ich würde erwarten, dass es zu 0 zurück, aber es gibt immer 12 (13 in der Oper, die macht es noch mehr komisch). Ist das ein normales Verhalten oder ist es ein bug? So oder so, wie kann ich zuverlässig erkennen, ob mein Millisekunden Wert ist nur um Minuten und Sekunden oder auch Stunden umfasst?

Dank.

UPD:

Ich habe es getestet in Chrome 15 und Firefox 7 auf OSX: das gleiche Ergebnis wie per screenshot oben). Ich kann nicht herausfinden, wie man mit Opera Dragonfly Konsole, aber was ich sehe, passiert auch in der Oper, nur mit dem Wert von 13 für getHours().

  • Sie don ' T wollen, verwenden Sie die Date Konstruktor hier. new Date( n ) gibt eine Date - Objekt mit dem Datum auf 1. Januar 1970 + n Millisekunden, das ist sicherlich nicht das, was Sie wollen...
  • also, was wäre eine gute alternative?
  • Ich würde das schreiben meiner eigenen Funktion.
  • Hier gehen Sie: jsfiddle.net/X5hn5/1
  • das ist genial, einfach und zuverlässig. Danke!!!
  • Ich habe erweitert und verbessert Ihre Funktion, falls es Sie interessiert: jsfiddle.net/j9zNa/1
  • Ich habe umgestalteten es ein bisschen... jsfiddle.net/j9zNa/2
  • cool!

InformationsquelleAutor Arnold | 2011-11-15
Schreibe einen Kommentar