PHP Conference Japan 2024

DateInterval::format

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

DateInterval::format格式化時間區間

說明

public DateInterval::format(字串 $format): 字串

格式化時間區間。

參數

format

format 參數字串中辨識以下字元。每個格式字元都必須以百分比符號 (%) 作為前綴。
format 字元 說明 範例值
% 字面值 % %
Y 年,數值,至少兩位數,不足補零 01, 03
y 年,數值 1, 3
M 月,數值,至少兩位數,不足補零 01, 03, 12
m 月,數值 1, 3, 12
D 日,數值,至少兩位數,不足補零 01, 03, 31
d 日,數值 1, 3, 31
a DateTime::diff() 計算結果的總天數,否則為 (unknown) 4, 18, 8123
H 小時,數值,至少兩位數,不足補零 01, 03, 23
h 小時,數值 1, 3, 23
I 分鐘,數值,至少兩位數,不足補零 01, 03, 59
i 分鐘,數值 1, 3, 59
S 秒,數值,至少兩位數,不足補零 01, 03, 57
s 秒,數值 1, 3, 57
F 微秒,數值,至少六位數,不足補零 007701, 052738, 428291
f 微秒,數值 7701, 52738, 428291
R 正負號,負數為 "-",正數為 "+" -, +
r 正負號,負數為 "-",正數為空字串 -,

回傳值

回傳格式化後的時間間隔。

更新日誌

版本 說明
7.2.12 Ff 格式現在將永遠為正數。
7.1.0 新增了 Ff 格式字元。

範例

範例 #1 DateInterval 範例

<?php

$interval
= new DateInterval('P2Y4DT6H8M');
echo
$interval->format('%d days');

?>

以上範例會輸出:

4 days

範例 #2 DateInterval 與進位點

<?php

$interval
= new DateInterval('P32D');
echo
$interval->format('%d days');

?>

以上範例會輸出:

32 days

範例 #3 DateIntervalDateTime::diff() 使用 %a 與 %d 修飾符

<?php

$january
= new DateTime('2010-01-01');
$february = new DateTime('2010-02-01');
$interval = $february->diff($january);

// %a 會輸出總天數。
echo $interval->format('%a total days')."\n";

// 而 %d 只會輸出未被月份涵蓋的天數。
echo $interval->format('%m month, %d days');

?>

以上範例會輸出:

31 total days
1 month, 0 days

備註

注意事項:

DateInterval::format() 方法不會重新計算時間字串或日期區段中的進位點。這是預期的行為,因為不可能溢出像 "32 days" 這樣的值,它可以被解釋為從 "1 month and 4 days""1 month and 1 day" 的任何值。

另請參閱

新增備註

使用者貢獻的備註 1 則備註

1
online dot cloudmeetings dot marco at gmail dot com
5 個月前
請注意這些重要的縮寫:

P:期間
Y:年
M:月
D:日
T:時間
H:小時
M:分鐘
S:秒

以上內容來自 ISO 8601 - 一個定義如何使用、儲存和傳輸日期、時間和持續時間資訊的國際標準。
To Top