淘先锋技术网

首页 1 2 3 4 5 6 7

在PHP中处理日期和时间非常方便,它提供了Date和DateTime两个类来分别处理日期和日期以及时间。本文将主要介绍DateTime类,并且重点探讨DateTime格式化。

DateTime类对于日期和时间的操作非常灵活,你可以用各种形式表示一个时间,比如:

$date1 = new DateTime();        // 创建当前时间
$date2 = new DateTime("now");   // 与上面的方式一样,创建当前时间
$date3 = new DateTime("2021-06-01"); // 创建一个指定日期的时间
$date4 = new DateTime("2021-06-01 19:15:16"); // 创建一个指定日期和时间的时间

当然,以上仅仅是DateTime类实例化的几个常见用法,实际上,它有很多种方法可以接收各种类型的时间。下面我们来看看日期时间的格式化。

为了方便表述,我们使用以下时间作为示例,2021年6月1日19点15分16秒:

$date = new DateTime("2021-06-01 19:15:16");

在DateTime类中,对于时间格式化有一个常见的方法format(),可以用来返回一个格式化后的时间字符串。下面是一些常见的日期格式化的例子:

$date->format("Y-m-d");   // 2021-06-01
$date->format("H:i:s");   // 19:15:16
$date->format("Y/m/d H:i:s"); // 2021/06/01 19:15:16
$date->format("l");       // Tuesday
$date->format("M");       // Jun
$date->format("F");       // June
$date->format("jS F Y h:i:s A");  // 1st June 2021 07:15:16 PM
$date->format("Y-m-d H:i:s T");   // 2021-06-01 19:15:16 UTC

在上面的例子中,我们使用了一些常见的时间格式化字符,如Y, m, d, H, i, s等。这些字符分别表示年,月,日,时,分,秒等,具体的含义可以查看DateTime类手册。

除了以上的格式化字符,DateTime类还支持一些特殊格式化字符,比如:

  • e – 时区标识
  • O – 与格林威治时间的差值,不含冒号,如+0800
  • P – 与格林威治时间的差值,含冒号,如+08:00
  • T – 时区标识,如UTC,EST等
  • c – ISO 8601格式,如2011-12-31T01:01:01+00:00
  • r – RFC 2822格式,如Tue, 13 Aug 2019 17:03:00 +0800
  • U – Unix时间戳

下面是使用以上特殊格式化字符的实例:

$date->format('e');    // UTC
$date->format('O');    // +0800
$date->format('P');    // +08:00
$date->format('T');    // UTC
$date->format('c');    // 2021-06-01T19:15:16+00:00
$date->format('r');    // Tue, 01 Jun 2021 19:15:16 +0000
$date->format('U');    // 1622553316

最后,需要特别注意的是,DateTime类在进行转化时,需要注意时区。默认情况下使用的是UTC时区,如果需要进行本地化的时间转化,需要先设置时区。比如:

$date->setTimezone(new DateTimeZone('Asia/Shanghai')); // 将时区设置为中国

这是DateTime类中比较常见的一些用法,当然还有很多的方法和技巧,需要使用时请参考相关文档。总之,对于PHP时间处理这一块,DateTime类是一个非常强大的类,可以满足绝大多数的时间处理需求。