1636 Stimmen

Konvertierung eines Unix-Zeitstempels in die Uhrzeit in JavaScript

Ich speichere Zeit in einer MySQL-Datenbank als Unix-Zeitstempel und das wird an einige JavaScript-Code gesendet. Wie würde ich nur die Zeit aus es bekommen?

Zum Beispiel, in HH/MM/SS Format.

25 Stimmen

Multiplizieren Sie einfach mit 1000, da JS-Zeitstempel in Millisekunden und PHP in Sekunden angegeben sind.

1 Stimmen

Hier ist ein sehr nützlicher Link mit verschiedenen Datumsformaten: timestamp.online/article/ Kombinieren Sie das mit der Multiplikation mit 1000 und Sie haben den Job erledigt!

0 Stimmen

Sehen Sie hier, was ich erreicht habe: stackoverflow.com/a/64089456/2927228

2297voto

Aron Rotteveel Punkte 77486
let unix_timestamp = 1549312452
// Create a new JavaScript Date object based on the timestamp
// multiplied by 1000 so that the argument is in milliseconds, not seconds.
var date = new Date(unix_timestamp * 1000);
// Hours part from the timestamp
var hours = date.getHours();
// Minutes part from the timestamp
var minutes = "0" + date.getMinutes();
// Seconds part from the timestamp
var seconds = "0" + date.getSeconds();

// Will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes.substr(-2) + ':' + seconds.substr(-2);

console.log(formattedTime);

Weitere Informationen über das Date-Objekt finden Sie unter MDN oder die ECMAScript 5-Spezifikation .

0 Stimmen

Sie könnten sich auch ein paar Prozessor-Ticks sparen, indem Sie die große Multiplikation vermeiden, indem Sie einfach drei 0en anhängen: echo "var date = new Date(" . $timestamp . "000); \n ";

128 Stimmen

@nickf-Multiplikationen sind auf modernen CPUs trivial - die String-Verkettung erfordert eine Los mehr Arbeit!

4 Stimmen

Verkettung sollte aus dem Lesen von Speicher und dem Schreiben von Speicher bestehen...wie kann jemand etwas entwerfen, das etwas Einfaches wie das Anhängen nimmt und es komplizierter macht als Multiplikation...fragen Sie ein Kind, ob es verketten kann, und es kann es...Multiplikation ist schwieriger...außerdem ist der Speicher so ausgelegt, dass er sowieso linear funktioniert...Kann jemand einen Verweis auf den Kommentar von @nickf geben?

378voto

shomrat Punkte 3563
function timeConverter(UNIX_timestamp){
  var a = new Date(UNIX_timestamp * 1000);
  var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
  var year = a.getFullYear();
  var month = months[a.getMonth()];
  var date = a.getDate();
  var hour = a.getHours();
  var min = a.getMinutes();
  var sec = a.getSeconds();
  var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
  return time;
}
console.log(timeConverter(0));

0 Stimmen

Für HH/MM/SS verwenden Sie einfach die letzten drei Variablen und die Zeit wird in Ihrer lokalen Zeit sein, aber wenn Sie die UTC-Zeit erhalten möchten, verwenden Sie einfach die getUTC-Methoden. Hier ist der Code.

44 Stimmen

Ich habe diese Lösung verwendet, sie aber so abgeändert, dass Minuten und Sekunden als :03 oder :09 statt als :3 oder :9 angezeigt werden: var min = a.getMinutes() < 10 ? '0' + a.getMinutes() : a.getMinutes(); var sec = a.getSeconds() < 10 ? '0' + a.getSeconds() : a.getSeconds();

4 Stimmen

Fehler: getMonth() gibt eine Monatszahl zwischen 0 und 11 zurück, also a.getMonth() - 1 ist falsch.

291voto

Steve Harrison Punkte 111024

Da JavaScript in Millisekunden arbeitet, müssen Sie zunächst den UNIX-Zeitstempel von Sekunden in Millisekunden umrechnen.

var date = new Date(UNIX_Timestamp * 1000);
// Manipulate JavaScript Date object here...

227voto

Dan Alboteanu Punkte 7808

Verwendung:

var s = new Date(1504095567183).toLocaleDateString("en-US")
console.log(s)
// expected output "8/30/2017"  

und für die Zeit:

var s = new Date(1504095567183).toLocaleTimeString("en-US")
console.log(s)
// expected output "3:19:27 PM"

siehe Date.prototype.toLocaleDateString()

0 Stimmen

Dies ist ein Befehl zum Abrufen des Datums (M/D/YYYY), nicht der Uhrzeit (HH/MM/SS), wie gefordert.

23 Stimmen

Die Zahl "1504095567183" ist unix_timestamp * 1000

16 Stimmen

Darüber hinaus, toLocaleString enthält sowohl Datum als auch Uhrzeit.

133voto

VisioN Punkte 137670

Moderne Lösung (für 2020)

In der neuen Welt sollten wir uns auf den Standard zubewegen Intl JavaScript-Objekt, das über eine praktische DateTimeFormat Konstrukteur mit .format() Methode:

function format_time(s) {
  const dtFormat = new Intl.DateTimeFormat('en-GB', {
    timeStyle: 'medium',
    timeZone: 'UTC'
  });

  return dtFormat.format(new Date(s * 1e3));
}

console.log( format_time(12345) );  // "03:25:45"

Ewige Lösung

Um jedoch 100% kompatibel mit allen älteren JavaScript-Engines zu sein, ist hier die kürzeste Ein-Zeilen-Lösung, um Sekunden zu formatieren als hh:mm:ss :

function format_time(s) {
  return new Date(s * 1e3).toISOString().slice(-13, -5);
}

console.log( format_time(12345) );  // "03:25:45"

Método Date.prototype.toISOString() gibt die Zeit in vereinfacht verlängert ISO 8601 Format, das immer 24 oder 27 Zeichen lang (d. h. YYYY-MM-DDTHH:mm:ss.sssZ oder ±YYYYYY-MM-DDTHH:mm:ss.sssZ bzw.). Die Zeitzone ist immer Null UTC-Versatz.

Diese Lösung erfordert keine Bibliotheken von Drittanbietern und wird von allen Browsern und JavaScript-Engines unterstützt.

0 Stimmen

Ich füge deine Funktion in die Konsole von Chrome ein :/ Sogar in deinem Fiddle zeigt es 01:02:00 für mich an! Habe es mit Firefox versucht, gleiche Ergebnisse. Sehr seltsam... Ich bin ziemlich sicher, es ist, weil ich GMT+1 bin!

0 Stimmen

Ich habe eine Bearbeitung für Ihre Antwort angeboten, die jede Zeitzone ignoriert, so dass immer der richtig formatierte Wert angezeigt wird!

1 Stimmen

@SteveChamaillard Vielen Dank, Steve. Du hattest Recht, toTimeString funktionierte nicht gut mit Zeitzonen. Leider wurde Ihre Bearbeitung abgelehnt, bevor ich sie sehen konnte. Ich würde jedoch vorschlagen, Folgendes zu verwenden toISOString stattdessen, da toGMTString ist veraltet und kann auf verschiedenen Plattformen unterschiedliche Ergebnisse liefern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X