Heim  >  Artikel  >  Backend-Entwicklung  >  Warum zeigt das Mikrosekundenfeld 000000 an, wenn Datumsangaben in m-d-y H:i:s.u aus Millisekunden formatiert werden?

Warum zeigt das Mikrosekundenfeld 000000 an, wenn Datumsangaben in m-d-y H:i:s.u aus Millisekunden formatiert werden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-23 19:52:30514Durchsuche

Why is the Microseconds Field Displaying 000000 When Formatting Dates in m-d-Y H:i:s.u from Milliseconds?

Datumsformat m-d-Y H:i:s.u aus Millisekunden abrufen

In dieser Abfrage besteht das Ziel darin, eine Datumszeichenfolge im Format „m-d-Y H:i: s.u“ aus einem Unix-Zeitstempel, angegeben in Millisekunden. Das Ergebnis zeigt jedoch weiterhin 000000 im Mikrosekundenfeld an.

<code class="php">$milliseconds = 1375010774123;
$d = date("m-d-Y H:i:s.u", $milliseconds/1000);
print $d;</code>

Ausgabe:

07-28-2013 11:26:14.000000

Lösung

Um dieses Problem zu beheben, Das Eingabeformat „U.u“ kann verwendet werden:

<code class="php">$now = DateTime::createFromFormat('U.u', microtime(true));
echo $now->format("m-d-Y H:i:s.u");</code>

Ausgabe:

04-13-2015 05:56:22.082300

Dieser Ansatz nutzt die folgenden Formatspezifizierer aus dem PHP-Handbuch:

  • U: Sekunden seit der Unix-Epoche
  • u: Mikrosekunden

Zeitzonen und Mikrozeit()

Es ist wichtig zu beachten, dass die Die Methode createFromFormat() verwendet normalerweise die lokale Zeitzone, sofern diese nicht explizit angegeben wird. Da microtime() jedoch die Anzahl der seit der Unix-Epoche verstrichenen Sekunden in UTC zurückgibt, wird das DateTime-Objekt implizit auf UTC initialisiert.

Wenn die Anzeige der Zeit für eine bestimmte Zeitzone erforderlich ist, muss diese festgelegt werden Verwenden von setTimeZone() nach der ersten DateTime-Erstellung:

<code class="php">$now->setTimeZone(new DateTimeZone('America/New_York'));</code>

Eingabe in MySQL

Um die formatierte Datumszeichenfolge in MySQL einzugeben, sollte das Format wie folgt geändert werden:

<code class="php">format("Y-m-d H:i:s.u")</code>

Das obige ist der detaillierte Inhalt vonWarum zeigt das Mikrosekundenfeld 000000 an, wenn Datumsangaben in m-d-y H:i:s.u aus Millisekunden formatiert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn