當前位置: 首頁> 最新文章列表> 如何結合date_timestamp_get 和DateTime::createFromFormat 實現時間戳轉換?

如何結合date_timestamp_get 和DateTime::createFromFormat 實現時間戳轉換?

gitbox 2025-09-19

在PHP 中,時間戳(timestamp)通常是以自1970 年1 月1 日以來的秒數來表示時間。開發者經常需要在不同格式的時間和時間戳之間進行轉換。 PHP 提供了多個強大的日期和時間處理函數,其中date_timestamp_getDateTime::createFromFormat是非常常用的工具。本文將介紹如何結合這兩個函數實現時間戳轉換。

date_timestamp_get函數

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">&lt;?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">?&gt;</span></span><span>
</span></span>

輸出:

 <span><span><span class="hljs-section">時間戳: 1757678400</span></span><span>
</span></span>

DateTime::createFromFormat函數

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">&lt;?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>-&gt;</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">?&gt;</span></span><span>
</span></span>

輸出:

 <span><span><span class="hljs-section">日期對象: 2025-09-12 12:00:00</span></span><span>
</span></span>

結合使用date_timestamp_getDateTime::createFromFormat

有時候,我們需要從一個特定格式的日期字符串中轉換為時間戳。此時,我們可以先使用DateTime::createFromFormat將日期字符串轉換為DateTime對象,再使用date_timestamp_get獲取時間戳。

示例

假設我們有一個日期字符串"12-09-2025 12:00:00" ,並希望將其轉換為時間戳。首先,我們使用DateTime::createFromFormat解析該字符串,然後通過date_timestamp_get獲取Unix 時間戳。

 <span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>
</span></span>

輸出:

 <span><span><span class="hljs-section">時間戳: 1757678400</span></span><span>
</span></span>

通過這種方式,我們就能夠將任何自定義格式的日期字符串轉換為Unix 時間戳。

總結

通過結合使用date_timestamp_getDateTime::createFromFormat ,我們能夠高效地處理各種格式的日期字符串並將其轉換為Unix 時間戳。這種方法特別適用於處理用戶輸入、日誌文件或其他需要按特定格式解析日期的情況。在實際開發中,掌握這些工具的使用可以讓時間和日期的處理變得更加靈活和方便。