📜  日期格式与 t 和 z php (1)

📅  最后修改于: 2023-12-03 14:55:09.114000             🧑  作者: Mango

日期格式与 t 和 z PHP

介绍

在 PHP 中,日期和时间是一种常见的数据类型。日期和时间通常用于表明事件发生的时间,或者计算两个时间点之间的时间间隔。为了方便处理日期和时间,PHP 提供了大量的日期和时间函数。

本文将介绍如何在 PHP 中格式化日期和时间,并探讨时区相关的函数。

格式化日期和时间

PHP 提供了几个函数,可以将日期和时间格式化为不同的字符串。以下是一些常见的日期和时间格式化函数:

date()

date() 函数用于将日期和时间格式化为字符串。以下是一些常见的 date() 格式:

| 格式 | 描述 | 例子 | | :--- | :--- | :--- | | Y | 年份,四位数字 | 2021 | | y | 年份,两位数字 | 21 | | m | 月份,两位数字 | 01-12 | | d | 日期,两位数字 | 01-31 | | H | 小时,24 小时格式 | 00-23 | | h | 小时,12 小时格式 | 01-12 | | i | 分钟,两位数字 | 00-59 | | s | 秒数,两位数字 | 00-59 |

例如,以下代码将当前时间格式化为 "Y-m-d H:i:s" 格式:

$now = date("Y-m-d H:i:s"); // e.g. 2021-09-27 14:36:23
strtotime()

strtotime() 函数用于将字符串转换为时间戳。以下是一些常见的 strtotime() 格式:

| 格式 | 描述 | 例子 | | :--- | :--- | :--- | | now | 当前时间 | now | | +2 days | 指定天数后的时间 | 2 天后 | | +1 week | 指定周数后的时间 | 1 周后 | | +1 month | 指定月数后的时间 | 1 个月后 | | +1 year | 指定年数后的时间 | 1 年后 |

例如,以下代码将 "2021-09-27 14:36:23" 转换为时间戳:

$timestamp = strtotime("2021-09-27 14:36:23");
时区处理

PHP 中的时间戳是相对于格林威治时间的秒数,可以用 date() 函数进行格式化。但是,为了正确处理时区,我们应该使用与时区有关的函数。

date_default_timezone_set()

date_default_timezone_set() 函数设置脚本的默认时区。该函数的参数是一个字符串,表示时区的名称。

例如,以下代码将脚本的时区设置为 "Asia/Shanghai":

date_default_timezone_set("Asia/Shanghai");
date_create()

date_create() 函数创建一个新的 DateTime 对象。DateTime 对象存储日期和时间,并且包含与时区有关的信息。

例如,以下代码创建一个 DateTime 对象:

$date = date_create();
DateTime::format()

DateTime::format() 方法用于将 DateTime 对象格式化为字符串。和 date() 函数一样,可以使用各种格式选项。

例如,以下代码将当前时间格式化为 "Y-m-d H:i:s" 格式:

$date = date_create();
echo $date->format("Y-m-d H:i:s"); // e.g. 2021-09-27 14:36:23
DateTimeZone 类

DateTimeZone 类用于表示时区。可以使用 new DateTimeZone() 函数创建 DateTimeZone 对象。

例如,以下代码创建一个表示 "Asia/Shanghai" 时区的 DateTimeZone 对象:

$timezone = new DateTimeZone("Asia/Shanghai");
DateTime::setTimezone()

DateTime::setTimezone() 方法用于将 DateTime 对象转换为其他时区的时间。

例如,以下代码将 "America/New_York" 时区的时间转换为 "Asia/Shanghai" 时区的时间:

$date = new DateTime("now", new DateTimeZone("America/New_York"));
$date->setTimezone(new DateTimeZone("Asia/Shanghai"));
echo $date->format("Y-m-d H:i:s"); // e.g. 2021-09-28 02:36:23
DateTimeZone::listIdentifiers()

DateTimeZone::listIdentifiers() 方法返回一个包含所有时区标识符的数组。

例如,以下代码列出所有可用的时区:

$timezones = DateTimeZone::listIdentifiers();
foreach ($timezones as $timezone) {
  echo $timezone . "\n";
 }
结论

上述介绍了 PHP 中有关日期和时间格式化的 function 和其它常用操作。通过使用这些函数,我们可以轻松地格式化日期和时间,并正确处理时区问题。这些函数可以帮助我们在 Web 应用程序和其他应用程序中管理日期和时间。