在PHP 中,時間戳(timestamp)通常是以自1970 年1 月1 日以來的秒數來表示時間。開發者經常需要在不同格式的時間和時間戳之間進行轉換。 PHP 提供了多個強大的日期和時間處理函數,其中date_timestamp_get和DateTime::createFromFormat是非常常用的工具。本文將介紹如何結合這兩個函數實現時間戳轉換。
date_timestamp_get函數可以從一個DateTime對像中獲取對應的Unix 時間戳。 Unix 時間戳是自1970 年1 月1 日以來的秒數,通常用於記錄某個特定的時間點。它的基本語法如下:
<span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-title function_ invoke__">date_timestamp_get</span></span><span>(DateTime </span><span><span class="hljs-variable">$object</span></span><span>)
</span></span>返回值是一個整數,表示Unix 時間戳。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">"2025-09-12 12:00:00"</span></span><span>);
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_timestamp_get</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"時間戳: "</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>輸出:
<span><span><span class="hljs-section">時間戳: 1757678400</span></span><span>
</span></span>DateTime::createFromFormat是一個非常有用的靜態方法,它允許我們根據特定的日期時間格式來創建一個DateTime對象。這在處理不規則或自定義格式的日期字符串時非常有用。它的基本語法如下:
<span><span><span class="hljs-title class_">DateTime</span></span><span>::</span><span><span class="hljs-title function_ invoke__">createFromFormat</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$date</span></span><span>, DateTimeZone </span><span><span class="hljs-variable">$timezone</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>)
</span></span>$format是一個日期時間格式化字符串, $date是一個符合該格式的日期時間字符串, $timezone是一個可選的時區對象。如果時區未指定,PHP 會使用默認時區。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$dateStr</span></span><span> = </span><span><span class="hljs-string">"12-09-2025 12:00:00"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"d-m-Y H:i:s"</span></span><span>;
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title class_">DateTime</span></span><span>::</span><span><span class="hljs-title function_ invoke__">createFromFormat</span></span><span>(</span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-variable">$dateStr</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"日期對象: "</span></span><span> . </span><span><span class="hljs-variable">$date</span></span><span>-></span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>輸出:
<span><span><span class="hljs-section">日期對象: 2025-09-12 12:00:00</span></span><span>
</span></span>有時候,我們需要從一個特定格式的日期字符串中轉換為時間戳。此時,我們可以先使用DateTime::createFromFormat將日期字符串轉換為DateTime對象,再使用date_timestamp_get獲取時間戳。
假設我們有一個日期字符串"12-09-2025 12:00:00" ,並希望將其轉換為時間戳。首先,我們使用DateTime::createFromFormat解析該字符串,然後通過date_timestamp_get獲取Unix 時間戳。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$dateStr</span></span><span> = </span><span><span class="hljs-string">"12-09-2025 12:00:00"</span></span><span>;
</span><span><span class="hljs-variable">$format</span></span><span> = </span><span><span class="hljs-string">"d-m-Y H:i:s"</span></span><span>;
</span><span><span class="hljs-comment">// 創建 DateTime 對象</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-title class_">DateTime</span></span><span>::</span><span><span class="hljs-title function_ invoke__">createFromFormat</span></span><span>(</span><span><span class="hljs-variable">$format</span></span><span>, </span><span><span class="hljs-variable">$dateStr</span></span><span>);
</span><span><span class="hljs-comment">// 获取時間戳</span></span><span>
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date_timestamp_get</span></span><span>(</span><span><span class="hljs-variable">$date</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"時間戳: "</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>輸出:
<span><span><span class="hljs-section">時間戳: 1757678400</span></span><span>
</span></span>通過這種方式,我們就能夠將任何自定義格式的日期字符串轉換為Unix 時間戳。
通過結合使用date_timestamp_get和DateTime::createFromFormat ,我們能夠高效地處理各種格式的日期字符串並將其轉換為Unix 時間戳。這種方法特別適用於處理用戶輸入、日誌文件或其他需要按特定格式解析日期的情況。在實際開發中,掌握這些工具的使用可以讓時間和日期的處理變得更加靈活和方便。