Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Medan Mikrosaat Memaparkan 000000 Apabila Memformat Tarikh dalam m-d-Y H:i:s.u daripada Milidetik?

Mengapa Medan Mikrosaat Memaparkan 000000 Apabila Memformat Tarikh dalam m-d-Y H:i:s.u daripada Milidetik?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-23 19:52:30595semak imbas

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

Mendapatkan Format Tarikh m-d-Y H:i:s.u daripada Millisaat

Dalam pertanyaan ini, objektifnya adalah untuk memformat rentetan tarikh dalam format "m-d-Y H:i: s.u" daripada cap waktu Unix yang diberikan dalam milisaat. Walau bagaimanapun, hasilnya terus memaparkan 000000 dalam medan mikrosaat.

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

Output:

07-28-2013 11:26:14.000000

Penyelesaian

Untuk menyelesaikan isu ini, format input "U.u" boleh digunakan:

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

Output:

04-13-2015 05:56:22.082300

Pendekatan ini menggunakan penentu format berikut daripada manual PHP:

  • U: Saat sejak Zaman Unix
  • u: Mikrosaat

Zon Masa dan mikromasa()

Adalah penting untuk ambil perhatian bahawa kaedah createFromFormat() biasanya menggunakan zon waktu tempatan jika tidak disediakan secara jelas. Walau bagaimanapun, memandangkan microtime() mengembalikan bilangan saat yang berlalu sejak Unix Epoch dalam UTC, objek DateTime secara tersirat dimulakan kepada UTC.

Jika memaparkan masa untuk zon waktu tertentu diperlukan, ia mesti ditetapkan menggunakan setTimeZone() selepas penciptaan DateTime awal:

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

Memasukkan ke dalam MySQL

Untuk memasukkan rentetan tarikh yang diformat ke dalam MySQL, format hendaklah diubah suai kepada:

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

Atas ialah kandungan terperinci Mengapa Medan Mikrosaat Memaparkan 000000 Apabila Memformat Tarikh dalam m-d-Y H:i:s.u daripada Milidetik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn