在 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 时间戳。这种方法特别适用于处理用户输入、日志文件或其他需要按特定格式解析日期的情况。在实际开发中,掌握这些工具的使用可以让时间和日期的处理变得更加灵活和方便。