PHP date() 函数常用时间格式控制符详解与使用示例

小岛来信
小岛来信
发布时间:2026-10-14 | 5人浏览过
原创

在处理 Web 应用数据时,日期的展示和存储至关重要。PHP 提供了强大的 date() 函数用于将时间戳转换为易读的格式。本文汇总了常用的时间格式控制符,包括日、星期、月、年、具体时间、时区信息以及 ISO/RFC 标准格式的详细对照表与使用指南,助您高效进行日期时间格式化操作。

核心目标与准备

date() 函数的基本语法为 string date(string $format, ?int $timestamp = null)。其核心在于第二个参数 $format,它由特定的格式化字符组成。默认情况下,该函数使用当前服务器的 Unix 时间戳(即调用时的系统时间);若需指定具体时间点,可传入 Unix 时间戳作为第二个参数。

常见时间格式控制符详解

第1步:定义日期中的“日”相关格式

根据需求选择月份天数、年份天数或带后缀的显示方式:

  • d: 月份中的第几天,有前导零的 2 位数字(01 到 31)。
  • j: 月份中的第几天,没有前导零(1 到 31)。
  • S: 每月天数后面的英文后缀(如 st, nd, rd, th),通常与 j 配合使用,例如 jS 输出 "5th"。
  • z: 年份中的第几天(0 到 366)。

第2步:定义“星期”相关格式

适用于需要展示周几或 ISO-8601 周数的场景:

  • l (小写 L): 星期几的完整文本格式(Sunday 到 Saturday)。
  • D: 星期几的文本缩写,3 个字母(Mon 到 Sun)。
  • N: ISO-8601 格式的星期数字(1 表示周一,7 表示周日)。注意:不同于默认的 0=周日。
  • w: 星期中的第几天,数字表示(0 表示周日,6 表示周六)。
  • W: ISO-8601 格式年份中的第几周(从周一开始计算)。

第3步:定义“月”相关格式

用于展示具体的月份信息:

  • F: 月份的完整文本格式(January 到 December)。
  • m: 数字表示的月份,有前导零(01 到 12)。
  • M: 三个月字母缩写的月份(Jan 到 Dec)。
  • n: 数字表示的月份,没有前导零(1 到 12)。
  • t: 给定月份所应有的天数(28 到 31),常用于判断当月长度。

第4步:定义“年”相关格式

根据是否需要闰年判断或特定年份长度进行选择:

  • L: 是否为闰年(1 表示是,0 表示否)。
  • o: ISO-8601 格式的年份数字。与 Y 类似,但如果日期所在的 ISO 周数属于前一年或下一年,则使用该年份。
  • Y: 4 位数字完整表示的年份(如 1999)。
  • y: 2 位数字表示的年份(如 99 或 03)。

第5步:定义“时间”相关格式

处理小时、分钟、秒及上午/下午标识:

  • a / A: 小写或小写的上午/下午值(am/pm 或 AM/PM)。
  • B: Swatch Internet 标准时(000 到 999),较少用。
  • g / G: 12 小时制或 24 小时制的小时,无前导零(1-12 或 0-23)。
  • h / H: 12 小时制或 24 小时制的小时,有前导零(01-12 或 00-23)。
  • i: 有前导零的分钟数(00 到 59)。
  • s: 有前导零的秒数(00 到 59)。

第6步:定义“时区”相关格式

当应用涉及跨国用户或需要精确记录时差时使用:

  • e: 时区标识(如 UTC, GMT, Asia/Shanghai)。
  • I: 是否为夏令时(1 是,0 否)。
  • O: 与格林威治时间相差的小时数(如 +0200)。
  • P: 与 GMT 的差别,小时和分钟间有冒号分隔(如 +02:00)。
  • T: 本机所在的时区缩写(如 EST, CST)。
  • Z: 时差偏移量的秒数。UTC 西边为负,东边为正(-43200 到 43200)。

第7步:定义完整的“日期/时间”标准格式

用于数据库存储或遵循特定互联网标准的日志输出:

  • c: ISO 8601 格式的日期(如 2004-02-12T15:19:21+00:00)。
  • r: RFC 822 格式的日期(如 Thu, 21 Dec 2000 16:01:07 +0200)。
  • U: 从 Unix 纪元开始至今的秒数,即时间戳本身。

综合实战示例

结合上述控制符,我们可以构建复杂的日期字符串。例如,想要输出 “2023年10月25日 星期三 14:30:00 CST”,可以组合如下字符:

<?php
$date_str = date("Y年m月d日 l H:i:s T");
echo $date_str;
// 假设当前时间为 2023-10-25 14:30:00 且时区为中国标准时间
// 输出: 2023年10月25日 Wednesday 14:30:00 CST
?>

如果需要更常见的中国习惯写法,可以替换部分字符:

<?php
$custom_date = date("Y/m/d D H:i");
echo $custom_date;
// 输出示例: 2023/10/25 Wed 14:30
?>

完成判断与排错提示

在使用 date() 时,若发现输出的时间与本地预期不符,请检查以下几点:

  1. 服务器时区设置:确保 php.ini 中 date.timezone 已正确设置(如 Asia/Shanghai),或在代码首行使用 date_default_timezone_set('Asia/Shanghai');。
  2. 参数类型:确认传入的时间戳是整数类型,而非字符串或其他格式。
  3. 大小写敏感:格式化字符对大小写敏感,例如 h 和 H 代表不同的 12/24 小时制。
以上就是 PHP 时间格式控制符对照表的详细内容,更多关于 PHP 日期处理的实用技巧与常见陷阱分析的资料请关注本站其它相关文章!
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表