PHP - 日期與時間



PHP 的內建庫包含大量函式,有助於以程式設計方式處理和操作日期和時間資訊。PHP 中的日期和時間物件可以透過傳遞日期/時間資訊的字串表示來建立,也可以從當前系統的時鐘建立。

PHP 提供 DateTime 類,該類定義了許多方法。在本章中,我們將詳細瞭解 PHP 中提供的各種與日期和時間相關的可用方法。

PHP 中的日期/時間功能實現了 ISO 8601 日曆,該日曆實現了格里高利曆之前現行的閏日規則。日期和時間資訊在內部儲存為 64 位數字。

使用 time() 獲取時間戳

PHP 的 time() 函式提供有關當前日期和時間的所有必要資訊。它不需要引數,但返回一個整數。

time(): int

time() 返回的整數表示自 1970 年 1 月 1 日格林威治標準時間午夜以來的秒數。此時刻稱為 UNIX 紀元,自那時以來經過的秒數稱為時間戳。

<?php
   print time();
?>

它將產生以下輸出

1699421347

我們可以將時間戳轉換為人類易於理解的形式。

使用 getdate() 轉換時間戳

getdate() 函式可以選擇性地接受時間戳,並返回一個包含日期資訊的關聯陣列。如果省略時間戳,它將使用 time() 返回的當前時間戳。

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

序號 鍵和描述 示例
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

年份 (4 位數字)

1997
8

yday

一年中的天數 (0-365)

19
9

weekday

星期幾

星期四
10

month

一年中的月份

一月
11

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

使用 date() 轉換時間戳

date() 函式返回表示日期的格式化字串。您可以使用必須傳遞給它的字串引數,對 date() 返回的格式進行大量的控制。

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

date() 可選地接受時間戳,如果省略,則使用當前日期和時間。您在傳遞給 date() 的格式字串中包含的任何其他資料都將包含在返回值中。

下表列出了格式字串可以包含的程式碼:

序號 格式和描述 示例
1

a

'am' 或 'pm'(小寫)

pm
2

A

'AM' 或 'PM'(大寫)

PM
3

d

月份的天數,帶前導零的數字

20
4

D

星期幾(三個字母)

Thu
5

F

月份名稱

一月
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(小寫 'L')

星期幾

星期四
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

小時的秒數

20
19

U

時間戳

948372444
20

y

年份(兩位數)

06
21

Y

年份(四位數)

2006
22

z

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

206
23

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 日期和時間函式 中給出。

廣告