PHP - 日期和时间



PHP 的内置库具有广泛的函数,有助于以编程方式处理和操作日期和时间信息。PHP 中的 Date Time 对象可以通过传入日期 / 时间信息的字符串表示来创建,也可以从当前系统的时间创建。

PHP 提供了 DateTime 类,该类定义了许多方法。在本章中,我们将详细介绍 PHP 中可用的各种与日期和时间相关的方法。

PHP 中的日期/时间功能实现了 ISO 8601 日历,它实现了公历出现之前的当前闰日规则。日期和时间信息在内部存储为 64 位数字。

使用 time() 获取时间戳

PHP 的 time() 函数为您提供有关当前日期和时间的所有信息。它不需要任何参数,但返回一个整数。


 time(): int

time() 返回的整数表示自 1970 年 1 月 1 日午夜 GMT 以来经过的秒数。此时刻称为 UNIX 纪元,此后经过的秒数称为时间戳。


<?php
   print time();
?>

它将产生以下输出 -

1699421347

我们可以将时间戳转换为人类熟悉的形式。

使用 getdate() 转换时间戳

函数 getdate() 可以选择接受时间戳并返回包含日期相关信息的关联数组。如果省略时间戳,它将与 time() 返回的当前时间戳一起使用。

下表列出了 getdate() 返回的数组中包含的元素。

Key 描述 示例
seconds

分钟过后秒 (0-59)

20
minutes

小时过后分钟数 (0 - 59)

29
hours

一天中的时间 (0 - 23)

22
mday

每月的日期 (1 - 31)

11
wday

星期几 (0 - 6)

4
mon

一年中的月份 (1 - 12)

7
year

年份 (4 位数字)

2024
yday

一年中的某天 ( 0 - 365 )

19
weekday

星期几

Thursday
month

一年中的月份

January
0

时间戳

948370048

现在您可以完全控制日期和时间。您可以按所需的任何格式设置此日期和时间的格式。

例子

看看下面的例子 -


<?php
   $date_array = getdate();

   foreach ( $date_array as $key => $val ){
      print "$key = $val\n";
   }
   $formated_date  = "Today's date: ";
   $formated_date .= $date_array['mday'] . "-";
   $formated_date .= $date_array['mon'] . "-";
   $formated_date .= $date_array['year'];

   print $formated_date;
?>

它将产生以下输出 -

seconds = 0
minutes = 38
hours = 6
mday = 8
wday = 3
mon = 11
year = 2023
yday = 311
weekday = Wednesday
month = November
0 = 1699421880
Today's date: 8-11-2024

使用 date() 转换时间戳

date() 函数返回表示日期的格式化字符串。你可以对 date() 返回的格式进行大量的控制,你必须将 string 参数传递给它。


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

date() 可以选择接受时间戳,如果省略,则将使用当前日期和时间。您包含在传递给 date() 的格式字符串中的任何其他数据都将包含在返回值中。

下表列出了格式字符串可以包含的代码 -

格式 描述 示例
a

'am' 或 'pm' 小写

pm
A

'AM' 或 'PM' 大写

PM
d

月份中的某天,带有前导零的数字

20
D

星期几(三个字母)

Thu
F

月份名称

January
h

小时(12 小时格式 - 前导零)

12
H

 

小时(24 小时格式 - 前导零)

22
g

小时(12 小时格式 - 无前导零)

12
G

小时(24 小时格式 - 无前导零)

22
i

分钟 ( 0 - 59 )

23
j

月份中的日期(没有前导零)

20
l (Lower 'L')

 

星期几

Thursday
L

闰年('1' 表示是,'0' 表示否)

1
m

一年中的月份(数字 - 前导零)

1
M

一年中的月份(三个字母)

Jan
r

RFC 2822 格式的日期

Thu, 21 Dec 2000 16:01:07 +0200
n

一年中的月份(数字 - 无前导零)

2
s

小时秒数

20
U

时间戳

948372444
y

年份 (两位数)

06
Y

年份 (四位数字)

2006
z

一年中的某天 (0 - 365)

206
Z

与 GMT 的偏移量(以秒为单位)

+5

例子

看看下面的例子 -


<?php
   print date("m/d/y G.i:s \n", time()) . PHP_EOL;
   print "Today is ";
   print date("j of F Y, \a\\t g.i a", time());
?>

它将产生以下输出 -

11/08/23 11.23:08

Today is 8 2023f November 2023, at 11.23 am

希望您对如何根据您的要求格式化日期和时间有很好的了解。供您参考,PHP日期和时间函数中给出了所有日期和时间函数的完整列表。