PHP Snippets

PHP Unix 时间戳代码片段

PHP 示例,用于获取 Unix 秒、生成毫秒、格式化时间戳、在 DateTime 对象之间转换,以及解析日期字符串。

Current Unix timestamp (seconds)
time()
Current Unix timestamp (milliseconds)
round(microtime(true) * 1000)
Formatted date from timestamp
date("Y-m-d H:i:s", 1700000000)
Date in specific timezone
date_default_timezone_set("America/New_York");
date("Y-m-d H:i:s", 1700000000);

// Or with DateTime:
$dt = new DateTime();
$dt->setTimestamp(1700000000);
$dt->setTimezone(new DateTimeZone("America/New_York"));
echo $dt->format("Y-m-d H:i:s");
Timestamp from date string
strtotime("2023-11-15 06:13:20 UTC")

PHP 时间戳基础

PHP 的 time() 返回整数 Unix 秒。当你需要亚秒精度,或想为面向 JavaScript 的 API 推导 Unix 毫秒时,使用 microtime(true)。

在 PHP 中格式化日期

date() 以服务器默认时区格式化时间戳,而 gmdate() 以 UTC 格式化。对于明确的时区处理,使用带 DateTimeZone 的 DateTime,使部署行为一致。

PHP 生产注意事项

PHP 应用常运行在默认时区各异的共享主机、容器或后台 worker 上。把服务器默认值当作实现细节。在持久化数据中存储 Unix 秒或 UTC 的 DateTime 值,然后在为用户、报表或集成格式化时间戳的那一点选择一个 DateTimeZone。

  • 控制器、任务和简单脚本中的整数 Unix 秒用 time()
  • 当你需要秒的小数或毫秒精度时用 microtime(true)
  • 使用 gmdate() 进行忽略服务器时区的稳定 UTC 格式化
  • 对于不应意外修改日期的代码使用 DateTimeImmutable

FAQ

time() 包含毫秒吗?
不。time() 返回整数 Unix 秒。如果你需要秒的小数部分,或需要计算毫秒时间戳,请使用 microtime(true)。
为什么用 gmdate() 而不是 date()?
gmdate() 以 UTC 格式化时间戳。date() 使用服务器配置的时区,而它在本地开发、容器和生产托管之间可能会变化。
如何检查 PHP 转换?
用 gmdate('c', $timestamp) 转换同一个值,然后在用于迁移之前,把它与独立的纪元转换器或数据库 UTC 函数比较。