(PHP 4, PHP 5, PHP 7, PHP 8)
date — 格式化 Unix 时间戳
使用给定的格式字符串和给定的整数 timestamp
(Unix 时间戳)返回一个格式化的字符串,如果没有给出时间戳,则使用当前时间。换句话说,timestamp
是可选的,默认为 time() 的值。
Unix 时间戳不处理时区。使用 DateTimeImmutable 类及其 DateTimeInterface::format() 格式化方法来格式化带有时区的日期/时间信息。
format
DateTimeInterface::format() 接受的格式。
注意: date() 将始终生成
000000
作为微秒,因为它采用 整数 参数,而 DateTimeInterface::format() 如果 DateTimeInterface 类型的对象是用微秒创建的,则支持微秒。
timestamp
可选的 timestamp
参数是一个 整数 Unix 时间戳,如果省略 timestamp
或为 null
,则默认为当前本地时间。换句话说,它默认为 time() 的值。
返回格式化的日期字符串。
每次调用日期/时间函数都会生成一个 E_WARNING
,如果时区无效。另见 date_default_timezone_set()
版本 | 描述 |
---|---|
8.0.0 |
timestamp 现在可以为 null。 |
示例 #1 date() 示例
<?php
// 设置要使用的默认时区。
date_default_timezone_set('UTC');
// 打印类似以下内容:星期一
echo date("l");
// 打印类似以下内容:星期一 8 月 8 日 2005 年 下午 03:12:46
echo date('l jS \of F Y h:i:s A');
// 打印:2000 年 7 月 1 日是星期六
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* 在 format 参数中使用常量 */
// 打印类似以下内容:Wed, 25 Sep 2013 15:28:57 -0700
echo date(DATE_RFC2822);
// 打印类似以下内容:2000-07-01T00:00:00+00:00
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>
您可以通过在前面添加反斜杠来转义格式字符串中识别的字符,以防止其被展开。如果带有反斜杠的字符已经是特殊序列,您可能还需要转义反斜杠。
示例 #2 转义 date() 中的字符
<?php
// 打印类似以下内容:星期三 15 号
echo date('l \t\h\e jS');
?>
可以一起使用 date() 和 mktime() 来查找未来或过去的日期。
示例 #3 date() 和 mktime() 示例
<?php
$tomorrow = mktime(0, 0, 0, date("m") , date("d")+1, date("Y"));
$lastmonth = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")+1);
?>
注意:
由于夏令时,这可能比简单地向时间戳添加或减去一天或一个月中的秒数更可靠。
一些 date() 格式化的示例。请注意,您应该转义任何其他字符,因为任何当前具有特殊含义的字符都会产生不良结果,并且其他字符在未来的 PHP 版本中可能会被赋予含义。转义时,请确保使用单引号以防止 \n 等字符变成换行符。
示例 #4 date() 格式化
<?php
// 假设今天是2001年3月10日下午5:16:18,并且我们处于
// 山区标准时间 (MST) 时区
$today = date("F j, Y, g:i a"); // 2001年3月10日,下午5:16
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // 这是第10天。
$today = date("D M j G:i:s T Y"); // 星期六 三月 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m 是月份
$today = date("H:i:s"); // 17:16:18
$today = date("Y-m-d H:i:s"); // 2001-03-10 17:16:18 (MySQL DATETIME 格式)
?>
要以其他语言格式化日期,可以使用IntlDateFormatter::format() 代替 date()。
注意:
要根据日期的字符串表示形式生成时间戳,您可以使用 strtotime()。此外,一些数据库具有将日期格式转换为时间戳的函数(例如 MySQL 的 » UNIX_TIMESTAMP 函数)。
请求开始时间的时间戳可在 $_SERVER['REQUEST_TIME'] 中找到。