PHP 中生成带毫秒的时间戳
原创
今天在对接一个 API 的时候,发现需要生成高精度的时间戳,格式为
yyyyMMddHH24mmssSSS
。
本文将介绍两种常见的实现方式,并讨论它们的优缺点。
时间格式解析
格式
yyyyMMddHH24mmssSSS
的含义如下:
- yyyy :四位数的年份(例如:2025)。
- MM :两位数的月份(01-12)。
- dd :两位数的日期(01-31)。
- HH24 :两位数的小时(24 小时制,00-23)。
- mm :两位数的分钟(00-59)。
- ss :两位数的秒(00-59)。
- SSS :三位数的毫秒(000-999)。
例如,时间
2025-01-02 11:30:45.123
的格式化结果为:
20250102113045123
。
使用
DateTime
类实现
以下是使用
DateTime
类生成毫秒时间戳的代码示例:
代码解析
-
$dateTime->format('u')返回当前时间的微秒(6 位数,例如123456)。 -
intval($dateTime->format('u') / 1000)将微秒转换为毫秒(3 位数,例如123)。 -
使用
sprintf("%03d", $milliseconds)确保毫秒部分始终为 3 位数(不足时补零)。
示例输出
假设当前时间为
2025-01-02 11:30:45.123456
,输出结果为:
使用
microtime
函数实现
另一种方法是结合
microtime()
和
date()
函数: