PHP date() 函数常用时间格式控制符详解与使用示例
在处理 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() 时,若发现输出的时间与本地预期不符,请检查以下几点:
- 服务器时区设置:确保 php.ini 中
date.timezone已正确设置(如Asia/Shanghai),或在代码首行使用date_default_timezone_set('Asia/Shanghai');。 - 参数类型:确认传入的时间戳是整数类型,而非字符串或其他格式。
- 大小写敏感:格式化字符对大小写敏感,例如
h和H代表不同的 12/24 小时制。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













