Nun, ich habe ein seltsames Problem beim Konvertieren von Unix-Zeitstempeln in menschliche Darstellungen mit Javascript
Hier ist der Zeitstempel
1301090400
Das ist mein Javascript
var date = new Date(timestamp * 1000);
var year = date.getFullYear();
var month = date.getMonth();
var day = date.getDay();
var hour = date.getHours();
var minute = date.getMinutes();
var seconds = date.getSeconds();
Ich erwartete Ergebnisse für 2011 2, 25 22 00 00. Aber es ist 2011, 2, 6, 0, 0, 0. Was ich vermisse?
Hilft das: stackoverflow.com/questions/847185/…
– James Hülse
24. März 2011 um 9:16 Uhr
Es ist dasselbe, was ich tue
– Georgewitsch
24. März 2011 um 9:20 Uhr
Ich habe dies in der Firefox Firebug-Konsole ausprobiert und das erwartete Ergebnis erhalten. Welchen Browser/OS verwendest du?
– andrewmu
24. März 2011 um 9:21 Uhr
Ich habe ein jsfiddle erstellt und es scheint gut zu funktionieren: jsfiddle.net/9SUqX (Ich habe auf Opera getestet)
getDay() gibt den Wochentag zurück. Um das Datum zu erhalten, verwenden Sie date.getDate(). getMonth() ruft den Monat ab, aber der Monat basiert auf null, also wird verwendet getMonth() + 1 sollte Ihnen den richtigen Monat geben. Der Zeitwert scheint hier in Ordnung zu sein, obwohl die Stunde hier 23 ist (GMT+1). Wenn Sie universelle Werte wollen, fügen Sie hinzu UTC zu den Methoden (z date.getUTCFullYear(), date.getUTCHours())
Ihr Vorschlag hilft beim Datum, aber ich kann immer noch nicht herausfinden, was mit Stunden, Minuten und Sekunden falsch ist
– Georgewitsch
24. März 2011 um 9:21 Uhr
@george du verpasst nichts. Diese Werte sind Ganzzahlen, können also keinen Wert wie “00” haben. Sie können es zum Beispiel ganz einfach selbst anhängen minute = (minute < 10 ? "0" : "") + minute;
– Beschatten Sie den Kinderzauberer
24. März 2011 um 9:28 Uhr
@georgevich: in welcher zeitzone bist du? Was passiert, wenn Sie verwenden date.getUTCHours()?
– KooiInc
24. März 2011 um 9:39 Uhr
GMT + 2 Das Ergebnis von date.getUTCHours() ist 19
– Georgewitsch
24. März 2011 um 9:43 Uhr
@lenny Ich würde nicht sagen, dass ich es bevorzuge. Vielleicht ein Überbleibsel von altem Code. Habe es entfernt.
– KooiInc
11. August um 8:18 Uhr
Schuvik
var newDate = new Date();
newDate.setTime(unixtime*1000);
dateString = newDate.toUTCString();
Wo unixtime ist die Zeit, die von Ihrer SQL-Datenbank zurückgegeben wird. Hier ist ein Geige wenn es hilft.
Verwenden Sie es beispielsweise für die aktuelle Zeit:
Jedenfalls lässt es sich leicht im Einzeiler drehen new Date(1480966325 * 1000).toUTCString()
– Rožkalns
26. Juli 2017 um 13:41 Uhr
Hier ist die Antwort von kooilnc mit aufgefüllten Nullen
function getFormattedDate() {
var date = new Date();
var month = date.getMonth() + 1;
var day = date.getDate();
var hour = date.getHours();
var min = date.getMinutes();
var sec = date.getSeconds();
month = (month < 10 ? "0" : "") + month;
day = (day < 10 ? "0" : "") + day;
hour = (hour < 10 ? "0" : "") + hour;
min = (min < 10 ? "0" : "") + min;
sec = (sec < 10 ? "0" : "") + sec;
var str = date.getFullYear() + "-" + month + "-" + day + "_" + hour + ":" + min + ":" + sec;
/*alert(str);*/
return str;
}
Kampf4Leben
verwenden Date.prototype.toLocaleTimeString() wie dokumentiert hier
Bitte beachten Sie das Locale-Beispiel en-US in der URL.
Hossein
Stunden, Minuten und Sekunden hängen von der Zeitzone Ihres Betriebssystems ab. In GMT (UST) ist es 22:00:00, aber in verschiedenen Zeitzonen kann es alles sein. Fügen Sie also den Zeitzonen-Offset zur Zeit hinzu, um das GMT-Datum zu erstellen:
var d = new Date();
date = new Date(timestamp*1000 + d.getTimezoneOffset() * 60000)
Warum Zeitstempel mal 1000?
– Bruno Gomes
20. März 2015 um 15:06 Uhr
@BrunoGomes er geht davon aus, dass der Zeitstempel in Sekunden ist, während Javascript sie in Millisekunden ausführt.
– Brent
24. September 2015 um 17:41 Uhr
David Alger
Ich suchte nach einer sehr spezifischen Lösung, um die aktuelle Zeit als Zeichenfolge mit garantierter Länge zurückzugeben, die am Anfang jeder Protokollzeile vorangestellt werden soll. Hier sind sie, wenn jemand anderes das Gleiche sucht.
Grundlegender Zeitstempel
"2021-05-26 06:46:33"
Die folgende Funktion gibt einen mit Nullen aufgefüllten Zeitstempel für die aktuelle Zeit zurück (immer 19 Zeichen lang)
function getTimestamp () {
const pad = (n,s=2) => (`${new Array(s).fill(0)}${n}`).slice(-s);
const d = new Date();
return `${pad(d.getFullYear(),4)}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
}
Vollständiger Zeitstempel
"2021-06-02 07:08:19.041"
Die folgende Funktion gibt einen mit Nullen aufgefüllten Zeitstempel für die aktuelle Zeit einschließlich Millisekunden zurück (immer 23 Zeichen lang)
function getFullTimestamp () {
const pad = (n,s=2) => (`${new Array(s).fill(0)}${n}`).slice(-s);
const d = new Date();
return `${pad(d.getFullYear(),4)}-${pad(d.getMonth()+1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(),3)}`;
}
Warum Zeitstempel mal 1000?
– Bruno Gomes
20. März 2015 um 15:06 Uhr
@BrunoGomes er geht davon aus, dass der Zeitstempel in Sekunden ist, während Javascript sie in Millisekunden ausführt.
– Brent
24. September 2015 um 17:41 Uhr
harrrrr
So erhalten Sie direkt eine lesbare lokale Zeitzone:
var timestamp = 1301090400,
date = new Date(timestamp * 1000)
document.write( date.toLocaleString() );
12155700cookie-checkZeitstempel in menschenlesbares Formatyes
Hilft das: stackoverflow.com/questions/847185/…
– James Hülse
24. März 2011 um 9:16 Uhr
Es ist dasselbe, was ich tue
– Georgewitsch
24. März 2011 um 9:20 Uhr
Ich habe dies in der Firefox Firebug-Konsole ausprobiert und das erwartete Ergebnis erhalten. Welchen Browser/OS verwendest du?
– andrewmu
24. März 2011 um 9:21 Uhr
Ich habe ein jsfiddle erstellt und es scheint gut zu funktionieren: jsfiddle.net/9SUqX (Ich habe auf Opera getestet)
– James Hülse
24. März 2011 um 9:28 Uhr
Hier ist, was ich bekomme img841.imageshack.us/i/screenshot20110324at113.png
– Georgewitsch
24. März 2011 um 9:35 Uhr