介绍:为什么需要掌握 PHP 中的日期和时间处理
处理日期和时间是 Web 开发中的关键任务之一。无论是记录用户操作、计算年龄、创建日历、处理数据库中的时间戳,还是管理订阅期限——没有可靠的日期处理工具是不行的。PHP 为开发者提供了强大且灵活的函数和类来实现这些目的。
本文将详细解析 PHP 中处理日期和时间的主要方法:从简单的 date() 和 time() 函数,到使用 DateTime 类的面向对象方法。您将学习如何格式化日期、计算日期差异、处理时区以及避免常见错误。
核心函数:date()、time() 和 mktime()
在 PHP 中获取当前日期或时间最简单的方法是使用 date() 函数。它接受一个格式字符串和一个可选的时间戳。如果未传递时间戳,则使用当前时间。
<?php// 当前日期,格式为 "年-月-日"echo date('Y-m-d'); // 输出:2025-04-10
// 当前时间,格式为 "时:分:秒"echo date('H:i:s'); // 输出:14:35:20
// 完整的日期和时间echo date('Y-m-d H:i:s'); // 输出:2025-04-10 14:35:20?>time() 函数
time() 返回当前的 Unix 时间戳(自 1970 年 1 月 1 日以来经过的秒数)。这对于计算和比较非常有用。
<?php$now = time();echo $now; // 输出:1744277720(数字每秒变化)
// 7 天后的日期$nextWeek = time() + (7 * 24 * 60 * 60);echo date('Y-m-d', $nextWeek); // 输出:2025-04-17?>mktime() 函数
mktime() 允许为特定的日期和时间创建时间戳。当需要为给定参数获取时间戳时,这很方便。
<?php// 为 2025 年 12 月 25 日 10:00:00 创建时间戳$christmas = mktime(10, 0, 0, 12, 25, 2025);echo date('Y-m-d H:i:s', $christmas); // 输出:2025-12-25 10:00:00?>日期格式化:常用字符
下表列出了 date() 函数最常用的格式化字符:
- d — 月份中的第几天(01–31)
- m — 月份(01–12)
- Y — 4 位数字表示的年份(2025)
- H — 24 小时制的小时(00–23)
- i — 分钟(00–59)
- s — 秒(00–59)
- l — 星期几的完整文本格式(Monday)
- F — 月份的完整文本格式(April)
面向对象方法:DateTime 类
从 PHP 5.2 开始,推荐使用 DateTime 类来处理日期。它提供了更多的功能和直观的接口。
创建 DateTime 对象
<?php// 当前日期和时间$date = new DateTime();echo $date->format('Y-m-d H:i:s'); // 输出:2025-04-10 14:35:20
// 特定日期$birthday = new DateTime('1990-07-15');echo $birthday->format('d.m.Y'); // 输出:15.07.1990
// 使用相对格式$nextMonth = new DateTime('+1 month');echo $nextMonth->format('Y-m-d'); // 输出:2025-05-10?>修改日期
modify() 方法允许使用相对字符串轻松更改日期。
<?php$date = new DateTime('2025-04-10');$date->modify('+10 days');echo $date->format('Y-m-d'); // 输出:2025-04-20
$date->modify('first day of next month');echo $date->format('Y-m-d'); // 输出:2025-05-01?>