PHP处理日期时间常用date()、time()和DateTime类,time()获取时间戳,date()格式化输出,strtotime()转换日期字符串为时间戳并支持相对时间,DateTime类适合复杂操作如时区、间隔计算;示例包括日期差、有效性验证、月首末日获取,需注意时区设置。

在PHP开发中,处理日期和时间是常见的需求。PHP提供了丰富的内置函数来操作时间,比如获取当前时间、格式化输出、时间戳转换、日期计算等。掌握这些函数的使用方法,能帮助开发者更高效地处理与时间相关的逻辑。
获取当前时间和时间戳
最常用的函数是 date() 和 time()。
time() 返回当前的 Unix 时间戳(从1970年1月1日至今的秒数):
$timestamp = time(); echo $timestamp; // 输出类似:1712345678
date($format, $timestamp) 将时间戳格式化为可读的字符串。如果不传第二个参数,默认使用当前时间:
立即学习“PHP免费学习笔记(深入)”;
echo date('Y-m-d H:i:s'); // 输出:2025-04-05 10:30:15
echo date('Y年m月d日'); // 输出:2025年04月05日
常用格式字符说明:
- Y - 四位数年份(2025)
- m - 带前导零的月份(01-12)
- d - 带前导零的日期(01-31)
- H - 24小时制小时(00-23)
- i - 分钟(00-59)
- s - 秒(00-59)
将日期字符串转为时间戳
使用 strtotime() 可以将人类可读的日期时间字符串转换为 Unix 时间戳。
$ts = strtotime("2025-04-05 10:00:00");
echo $ts;
// 支持相对时间
echo strtotime("+1 day"); // 明天同一时间的时间戳
echo strtotime("next Monday"); // 下个周一
echo strtotime("-1 week"); // 一周前
这个函数非常灵活,适合做日期加减或判断时间间隔。
使用 DateTime 类进行高级操作
对于更复杂的日期处理,推荐使用面向对象的 DateTime 类。
$date = new DateTime(); // 当前时间
echo $date->format('Y-m-d H:i:s');
// 设置特定时间
$date->setDate(2025, 12, 25);
$date->setTime(14, 30, 0);
echo $date->format('Y-m-d H:i:s');
// 添加时间间隔
$date->modify('+2 weeks');
echo $date->format('Y-m-d');
// 或使用 DateInterval
$interval = new DateInterval('P1D'); // 1天
$date->add($interval);
DateTime 更适合处理时区、夏令时、跨月计算等复杂场景。
常见实用案例
计算两个日期之间的天数差:
$start = new DateTime('2025-01-01');
$end = new DateTime('2025-04-05');
$interval = $start->diff($end);
echo $interval->days; // 输出天数
判断是否为有效日期:
function isValidDate($date) {
$d = DateTime::createFromFormat('Y-m-d', $date);
return $d && $d->format('Y-m-d') === $date;
}
var_dump(isValidDate('2025-02-30')); // false
var_dump(isValidDate('2025-02-15')); // true
获取本月第一天和最后一天:
echo date('Y-m-01'); // 本月第一天
echo date('Y-m-t'); // 本月最后一天(t 表示当月天数)
基本上就这些。合理使用 date()、strtotime() 和 DateTime 类,就能应对大多数时间处理需求。注意服务器时区设置,必要时用 date_default_timezone_set() 调整。











