2024 年 PHP 日本大会

date

(PHP 4, PHP 5, PHP 7, PHP 8)

date格式化 Unix 时间戳

描述

date(字符串 $format, ?整数 $timestamp = null): 字符串

使用给定的格式字符串和给定的整数 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'] 中找到。

参见

添加注释

用户贡献的注释

此页面没有用户贡献的注释。
To Top