Php 简明教程

PHP - Date & Time

PHP 的内置函数库具有广泛的函数,可帮助以编程方式处理和操作日期和时间信息。可以使用日期/时间信息的字符串形式或者从当前系统的时间创建 PHP 中的 Date 和 Time 对象。

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

PHP 中的日期/时间功能实现了 ISO 8601 日历,它实现了在格里高利历之前通用的现行的闰年规则。日期和时间信息内部存储为 64 位数字。

Getting the Time Stamp with time()

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

time(): int

time() 返回的整数表示自 1970 年 1 月 1 日格林尼治标准时间午夜以来的经过的秒数。这个时刻称为 UNIX 紀元,并且从那时起经过的秒数称为时间戳。

<?php
   print time();
?>

它将生成以下 output

1699421347

我们可以将时间戳转换为人类容易理解的形式。

Converting a Time Stamp with getdate()

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

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

Sr.No

Key & Description

Example

1

seconds 秒(0-59)

20

2

minutes 分(0 - 59)

29

3

hours 时(0 - 23)

22

4

mday 日(1 - 31)

11

5

wday 星期(0 - 6)

4

6

mon 月(1 - 12)

7

7

year Year (4 digits)

1997

8

yday 一年中的天(0 - 365)

19

9

weekday Day of the week

Thursday

10

month Month of the year

January

11

0 Timestamp

948370048

现在您可以完全控制日期和时间。您可以按照想要的任何格式格式化此日期和时间。

Example

看看下面的 example

<?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;
?>

它将生成以下 output

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-2023

Converting a Time Stamp with date()

date() 函数返回一个表示日期的格式化字符串。通过要传递给它的字符串参数,可以对 date() 返回的格式进行大量的控制。

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

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

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

Sr.No

Format & Description

Example

1

a 'am' or 'pm' lowercase

pm

2

A 'AM' or 'PM' uppercase

PM

3

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

20

4

D 星期中的天(三个字母)

Thu

5

F Month name

January

6

h 小时(12 小时制,前导零)

12

7

H 小时(24 小时制,前导零)

22

8

g 小时(12 小时制,无前导零)

12

9

G 小时(24 小时制,无前导零)

22

10

i 分钟(0-59)

23

11

j 当月的第幾天(無前導零)

20

12

l (Lower 'L') 星期中的天

Thursday

13

L 閏年(‘1’ 表示是,‘0’ 表示否)

1

14

m 年份中的月份(数字,前导零)

1

15

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

Jan

16

r 以 RFC 2822 格式化日期

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

17

n 年份中的月份(数字,无前导零)

2

18

s Seconds of hour

20

19

U Time stamp

948372444

20

y Year (two digits)

06

21

Y Year (four digits)

2006

22

z 一年中的第幾天(0-365)

206

23

Z 格林威治时间的秒偏移量

+5

Example

看看下面的 example

<?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());
?>

它将生成以下 output

11/08/23 11.23:08

Today is 8 2023f November 2023, at 11.23 am

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