date

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

date格式化 Unix 时间戳

描述

date(string $format, ?int $timestamp = null): string

根据给定的格式字符串返回一个格式化的字符串,使用给定的整数 timestamp(Unix 时间戳),如果未给出时间戳,则使用当前时间。换句话说,timestamp 是可选的,默认值为 time() 的值。

警告

Unix 时间戳不处理时区。使用 DateTimeImmutable 类及其 DateTimeInterface::format() 格式化方法来格式化带有时区附加的日期/时间信息。

参数

format

DateTimeInterface::format() 接受的格式。

注意: date() 将始终生成 000000 作为微秒,因为它接受一个 int 参数,而 DateTime::format() 如果 DateTime 是用微秒创建的,则支持微秒。

timestamp

可选的 timestamp 参数是一个 int Unix 时间戳,如果省略 timestamp 或为 null,则默认为当前本地时间。换句话说,它默认为 time() 的值。

返回值

返回格式化的日期字符串。

错误/异常

每次调用日期/时间函数都会生成一个 E_WARNING,如果时区无效。另请参见 date_default_timezone_set()

变更日志

版本 描述
8.0.0 timestamp 现在可以为空。

示例

示例 #1 date() 示例

<?php
// 设置要使用的默认时区。
date_default_timezone_set('UTC');


// 打印类似于:Monday
echo date("l");

// 打印类似于:Monday 8th of August 2005 03:12:46 PM
echo date('l jS \of F Y h:i:s A');

// 打印:July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));

/* 使用格式参数中的常量 */
// 打印类似于: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
// 打印类似于:Wednesday the 15th
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.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$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