PHP 日期与时间
1. PHP 日期和时间函数
PHP 提供了多种内置的日期和时间函数,用于处理服务器端的日期和时间。
核心的日期和时间函数包括:
date()- 格式化本地日期和/或时间mktime()- 返回日期的 Unix 时间戳strtotime()- 将英文文本日期时间字符串转换为 Unix 时间戳time()- 以 Unix 时间戳形式返回当前时间date_default_timezone_set()- 设置后续使用的默认时区date_default_timezone_get()- 获取当前脚本使用的默认时区
2. PHP date() 函数
date() 函数用于将本地日期和/或时间格式化为更具可读性的形式。
2.1 语法
date(format, timestamp)| 参数 | 描述 |
|---|---|
| format | 必填。规定时间戳的格式。 |
| timestamp | 可选。规定 Unix 时间戳。默认是当前的本地日期和时间。 |
2.2 使用 date() 函数格式化日期
date() 函数中的 format 参数定义了日期的显示方式。以下是一些常用于日期的字符:
- d - 代表月份中的天数(01 到 31)
- j - 代表月份中的天数,不带前导零(1 到 31)
- m - 代表月份(01 到 12)
- Y - 代表年份(四位数)
- l (小写的 'L') - 代表星期几
- F - 代表月份的完整英文名称
其他字符如 "/"、"." 或 "-" 也可以插入到字符之间,以添加额外的格式。
代码示例:
<?php
echo "今天是 " . date("Y/m/d") . "<br>";
echo "今天是 " . date("Y.m.d") . "<br>";
echo "今天是 " . date("Y-m-d") . "<br>";
echo "今天是 " . date("l");
?>3. PHP 小技巧 - 自动更新版权年份
可以使用 date() 函数在网站上自动更新版权年份:
代码示例:
© 2010-<?php echo date("Y");?>4. 显示时间
date() 函数同样用于将本地时间格式化为可读形式。以下是一些常用于时间的字符:
- H - 24 小时制的小时(00 到 23)
- h - 12 小时制的小时,带前导零(01 到 12)
- i - 分数,带前导零(00 到 59)
- s - 秒数,带前导零(00 到 59)
- a - 小写的上午或下午(am 或 pm)
代码示例:
<?php
echo "现在时间是 " . date("H:i:s") . "<br>";
echo "现在时间是 " . date("h:i:s a");
?>5. PHP date_default_timezone_set() 函数
请注意,date() 函数返回的是服务器当前的本地日期/时间!
如果需要根据特定位置获取准确的时间,需要使用 date_default_timezone_set() 函数设置要使用的时区。
下例将时区设置为 "America/New_York",然后以指定格式输出当前日期和时间:
代码示例:
<?php
date_default_timezone_set("America/New_York");
echo "纽约当前时间是 " . date("Y-m-d H:i:s");
?>6. PHP date_default_timezone_get() 函数
若要返回脚本中所有日期/时间函数所使用的默认时区,请使用 date_default_timezone_get() 函数:
代码示例:
<?php
echo date_default_timezone_get();
?>7. PHP mktime() 函数
date() 函数中的可选 timestamp 参数可以指定一个时间戳。如果省略,则使用当前日期和时间(如上述示例所示)。
mktime() 函数返回日期的 Unix 时间戳。Unix 时间戳是自 Unix 纪元(1970 年 1 月 1 日 00:00:00 GMT)至指定时间之间的秒数。
7.1 语法
mktime(hour, minute, second, month, day, year)代码示例:
下例返回特定日期的 Unix 时间戳,并使用 date() 函数查找该日期是星期几:
<?php
date_default_timezone_set("UTC");
$d = mktime(0, 0, 0, 10, 3, 1975);
echo "1975年10月3日是 " . date("l", $d);
?>8. PHP time() 函数
time() 函数以 Unix 时间戳的形式返回当前时间。
8.1 语法
time()代码示例:
<?php
echo "当前时间戳: " . time();
?>下例展示了如何将获取的当前时间戳格式化为可读的日期时间:
<?php
$ts = time();
echo date('Y-m-d H:i:s', $ts);
?>9. PHP strtotime() 函数
strtotime() 函数将英文文本形式的日期时间字符串转换为 Unix 时间戳。
9.1 语法
strtotime(datetime_string, basetimestamp)strtotime() 在将字符串转换为日期方面非常智能,您可以输入各种描述性值:
代码示例:
<?php
$d = strtotime("10:30pm November 15 2025");
echo "日期是 " . date("Y-m-d H:i:s", $d) . "<br>";
$d = strtotime("now");
echo "当前日期 " . date("Y-m-d H:i:s", $d) . "<br>";
$d = strtotime("+5 days");
echo "5天后是 " . date("Y-m-d H:i:s", $d) . "<br>";
$d = strtotime("+2 weeks 4 days 2 hours 20 seconds");
echo "指定偏移后是 " . date("Y-m-d H:i:s", $d) . "<br>";
$d = strtotime("last Sunday");
echo "上个星期日是 " . date("Y-m-d H:i:s", $d);
?>提示:strtotime() 并非完美,请务必检查您输入的字符串格式。
10. 更多日期示例
以下示例输出接下来六个星期六的日期:
代码示例:
<?php
$startdate = strtotime("Saturday");
$enddate = strtotime("+6 weeks", $startdate);
while ($startdate < $enddate) {
echo date("M d", $startdate) . "<br>";
$startdate = strtotime("+1 week", $startdate);
}
?>