PHP Date() 和时间函数:如何获取当前时间戳?

⚡ 智能摘要

PHP 的 date() 函数可以将时间戳格式化为人类可读的日期和时间。本教程将解释日期语法、Unix 时间戳、如何列出和设置时区、用于构建时间戳的 mktime 函数,以及时间、日、月、年格式字符的完整参考。

  • 📅 date() 函数的作用: date 函数将时间戳转换为格式化字符串,其中 Y、m 和 d 分别代表年、月和日。
  • ⏱️ Unix 时间戳: 时间戳是自 1970 年 1 月 1 日格林尼治标准时间以来的秒数,time() 返回当前值。
  • 🌍 时区: date_default_timezone_set 更改活动时区,而 DateTimeZone::listIdentifiers 列出所有受支持的时区。
  • 🔧 mktime: mktime 函数根据特定的小时、分钟、秒、月、日和年构建时间戳。
  • 🔤 格式字符: 单个字母控制输出,例如 H 表示 24 小时制时间,l 表示星期几名称,F 表示月份名称。
  • 📐 参考表: 分组表格列出了时间、日期、月份和年份格式字符,并为每个字符提供了一个可运行的示例。
  • 🤖 人工智能辅助: 人工智能工具可以生成日期格式和差异代码,并帮助解决令人困惑的时区错误。

PHP date() 函数

PHP date() 函数

PHP 的 date 函数是一个内置函数,它简化了日期数据类型的处理。PHP date 函数用于将日期或时间格式化为人类可读的格式。它可以用来显示文章的发布日期,或者记录数据库中数据的最后更新时间。

PHP 日期语法和示例

PHP date() 函数的基本语法如下。

<?php
date(format,[timestamp]);
?>

这里,

  • “date(…)”函数返回格式化后的当前时间戳。 PHP 在服务器上。
  • “格式”是指我们希望输出结果呈现的一般格式,例如:
    • “Ymd”表示PHP日期格式YYYY-MM-DD
    • “Y”显示当前年份
  • “[timestamp]”是可选的。如果未提供时间戳,PHP 将使用服务器上的当前日期和时间。

让我们来看一个显示当前年份的简单例子。

<?php

echo date("Y");

?>

输出:

2026

什么是时间戳?

在 PHP 中,时间戳是一个数值,以秒为单位,表示当前时间与 1 时刻的值之间的距离。st 1970 年 1 月 00:00:00 格林威治标准时间 (GMT)。

时间函数返回的值取决于默认时区。

默认时区在 php.ini 文件中设置。也可以使用 date_default_timezone_set 函数以编程方式设置。

以下代码显示当前时间戳。

<?php

echo time();

?>

假设您已将 timestamp.php 文件保存在 phptuts 文件夹中,请浏览至该文件夹。 URL http://localhost/phptuts/timestamp.php

时间戳

注意:时间戳的值并非恒定不变,它每秒都会变化。

获取可用时区标识符列表

在了解如何通过编程方式设置默认时区之前,让我们先来看看如何获​​取支持的时区列表。

<?php

$timezone_identifiers = DateTimeZone::listIdentifiers();

foreach($timezone_identifiers as $key => $list){

echo $list . "<br/>";

}
?>

这里,

  • “$timezone_identifiers = DateTimeZone::listIdentifiers();”调用了DateTimeZone内置类的静态方法listIdentifiers。listIdentifiers方法返回一个标识符列表,并将这些标识符赋值给变量$timezone_identifiers。
  • “foreach{…}”遍历数组并打印其值。

假设您已将文件 list_time_zones.php 保存在 phptuts 文件夹中,请浏览到该文件夹​​。 URL http://localhost/phptuts/list_time_zones.php

时区标识符

PHP 以编程方式设置时区

date_default_timezone_set 函数允许您从 PHP 脚本设置默认时区。

设定的时区将用于所有日期。 PHP 函数 在你的脚本中。它的语法如下。

<?php
date_default_timezone_set(string $timezone_identifier);
?>

这里,

  • “date_default_timezone_set()” 是设置默认时区的函数
  • “string $timezone_identifier” 是时区标识符

以下脚本会根据 php.ini 中设置的默认时区显示时间。然后,它会将默认时区更改为 Asia/Calcutta,并再次显示时间。

<?php
echo "The time in " . date_default_timezone_get() . " is " . date("H:i:s");

date_default_timezone_set("Asia/Calcutta");
echo "The time in " . date_default_timezone_get() . " is " . date("H:i:s");
?>

假设您已将文件 set_time_zone.php 保存在 phptuts 文件夹中,请浏览到该文件夹​​。 URL http://localhost/phptuts/set_time_zone.php

PHP 以编程方式设置时区

PHP Mktime 函数

mktime 函数返回 Unix的 格式。

它具有以下语法。

<?php
mktime(hour, minute, second, month, day, year, is_dst);
?>

这里,

  • “mktime(…)” 是制作 PHP 时间戳的函数
  • “小时”是可选的;它指的是小时数。
  • “分钟”是可选的;它指的是分钟数。
  • “秒”是可选的,它指的是秒数。
  • “月份”是可选的;它指的是月份的数字。
  • “day”是可选的;它指的是日期的数字。
  • “年份”是可选的;它指的是年份的数字。
  • “is_dst”参数为可选参数,用于确定是否实行夏令时(DST)。1表示实行夏令时,0表示不实行夏令时,-1表示不确定。

现在让我们来看一个使用 mktime 函数为日期 2025 年 10 月 13 日创建时间戳的示例。

<?php

echo mktime(0,0,0,10,13,2025);

?>

这里,

  • “0,0,0”分别代表小时、分钟和秒。
  • “10” 是月份
  • “13” 是月份中的日期
  • “2025”是

输出:

1760328000

PHP 日期格式参考

下表显示了使用 PHP 日期函数时常用的格式字符。

时间参数

参数 描述 例如:
“ R” 返回完整的日期和时间
<?php
echo date("r");
?>
“a”、“A” 返回当前时间是上午还是下午,AM 还是 PM
<?php
echo date("a");
echo date("A");
?>
“g”、“G” 分别返回不带前导零的小时数 [1 到 12]、[0 到 23]
<?php
echo date("g");
echo date("G");
?>
“h”、“H” 返回带前导零的小时数 [01 至 12],[00 至 23]
<?php
echo date("h");
echo date("H");
?>
“是” 返回带前导零的分钟/秒[00 至 59]
<?php
echo date("i");
echo date("s");
?>

日参数

参数 描述 例如:
“ d” 返回带前导零的月份日期 [01 到 31]
<?php
echo date("d");
?>
“j” 返回不带前导零的月份日期 [1 到 31]
<?php
echo date("j");
?>
“d” 返回星期几名称的前三个字母(周日至周六)
<?php
echo date("D");
?>
“ L” 返回星期几的名称(星期日到星期六)
<?php
echo date("l");
?>
“w” 返回不带前导零的星期几 [0 到 6];星期日用零 (0) 表示,星期六用六 (6) 表示。
<?php
echo date("w");
?>
“和” 返回一年中的第几天,不带前导空格 [0 至 365]
<?php
echo date("z");
?>

月份参数

参数 描述 例如:
“m”个 返回带前导零的月份数字 [01 至 12]
<?php
echo date("m");
?>
“ n” 返回不带前导零的月份数字 [1 至 12]
<?php
echo date("n");
?>
“ M” 返回月份名称的前 3 个字母 [Jan 至 Dec]
<?php
echo date("M");
?>
“F” 返回月份名称 [January 至 December]
<?php
echo date("F");
?>
“ t” 返回一个月的天数 [28 至 31]
<?php
echo date("t");
?>

年份参数

参数 描述 例如:
“L” 如果是闰年则返回 1,如果不是闰年则返回 0。
<?php
echo date("L");
?>
“ Y” 返回四位数的年份格式
<?php
echo date("Y");
?>
“ Y” 返回两位数年份格式(00 到 99)
<?php
echo date("y");
?>

常见问题

`date()` 是一个简单的过程函数,用于格式化时间戳。`DateTime` 类是面向对象的,支持算术运算、比较、时区和不可变性,因此更适合大型应用程序中复杂的日期逻辑。

使用 strtotime() 函数,它可以读取诸如 '2025-10-13' 或 'next' 之类的格式。 Monday并返回一个 Unix 时间戳。对于已知格式的严格解析,DateTime::createFromFormat 更安全,因为它会在输入无效时明确报错。

创建两个 DateTime 对象并调用 diff() 方法,该方法返回一个 DateInterval 对象。然后,您可以读取天数、月数或年数,例如,使用 $start->diff($end)->days 可以获取两个日期之间的总天数。

是的。描述输入和输出格式,AI 就能生成 date()、DateTime 或 strtotime 类型的代码,包括添加时间间隔或转换时区。用闰年和月末等特殊情况进行测试。

是的。人工智能可以检测到缺少 date_default_timezone_set 调用、服务器时区与显示时区不匹配或夏令时问题,然后建议使用带有明确时区的 DateTime 对象,以使行为可预测。

总结一下这篇文章: