PHP 日期和时间处理:从入门到精通——完整指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

PHP 日期和时间处理:从入门到精通



日期和时间处理是 Web 开发中最常见的任务之一。无论是显示发布日期、计算用户年龄、记录事件日志还是创建日历,PHP 都提供了强大而灵活的工具。在本文中,我们将剖析所有方面:从简单的函数到使用 DateTime 类的面向对象方法,包括时区和实际示例。



基本函数:date() 和 time()



用于处理日期的基础函数集包括 time() 和 date()。函数 time() 返回当前的 Unix 时间戳(自 1970 年 1 月 1 日以来的秒数)。函数 date() 将此时间戳格式化为人类可读的形式。



获取当前日期和时间

显示当前日期的最简单方法:

<?phpecho date('Y-m-d H:i:s'); // 2025-04-10 15:30:45?>


使用 date() 进行格式化

函数 date() 接受两个参数:格式和可选的时间戳。最常用的格式化字符:

  • d — 月份中的第几天(01–31)
  • m — 月份(01–12)
  • Y — 4 位数字表示的年份
  • H — 24 小时制的小时(00–23)
  • i — 分钟(00–59)
  • s — 秒(00–59)

包含中文文本的输出示例:

<?phpecho '今天是 ' . date('Y年m月d日') . ',时间 ' . date('H:i');// 今天是 2025年04月10日,时间 15:30?>


DateTime 类:面向对象的方法

对于复杂操作,建议使用 DateTime 类。它直观易懂,支持时区,并简化了日期操作。



创建 DateTime 对象

可以通过多种方式创建对象:

<?php// 当前日期和时间$now = new DateTime();echo $now->format('Y-m-d H:i:s'); // 2025-04-10 15:30:45

// 特定日期$date = new DateTime('2025-12-31 23:59:59');echo $date->format('d.m.Y'); // 31.12.2025

// 使用相对格式$nextWeek = new DateTime('+1 week');echo $nextWeek->format('Y-m-d');?>


修改日期:modify()

方法 modify() 允许轻松添加或减去时间间隔:

<?php$date = new DateTime('2025-04-10');$date->modify('+10 days');echo $date->format('d.m.Y'); // 20.04.2025

$date->modify('-1 month');echo $date->format('d.m.Y'); // 20.03.2025?>


处理时区

忽略时区是一个常见错误。PHP 提供了两种管理时区的方法:全局通过 date_default_timezone_set(),以及局部通过 DateTimeZone 对象。



全局设置

在脚本开头设置时区:

<?phpdate_default_timezone_set('Europe/Moscow');echo date('H:i'); // 莫斯科时间?>


DateTime 的局部设置

每个 DateTime 对象可以有自己的时区:

<?php$timezone = new DateTimeZone('Asia/Vladivostok');$date = new DateTime('now', $timezone);echo $date->format('H:i'); // 符拉迪沃斯托克时间

// 更改现有对象的时区$date->setTimezone(new DateTimeZone('Europe/Moscow'));echo $date->format('H:i'); // 转换后的时间?>


日期之间的差异:DateInterval

类 DateInterval 和方法 diff() 允许计算两个日期之间的差异。



计算差异

<?php$start = new DateTime('2025-01-01');$end = new DateTime('2025-12-31');$interval = $start->diff($end);

echo $interval->days; // 364(天数

博客

书籍推荐