2015-09-24 32 views
0

試圖生成簡單的「H:我:■」字符串從秒,但不能PHP DateInterval格式分秒與領先的零

例如:

$iSecond = 188; 
$dtF = new DateTime("@0"); 
$dtT = new DateTime("@$iSecond"); 
$size = $dtF->diff($dtT)->format('%H:%i:%s'); 
echo $size; 

應顯示「00:03 :08「,但實際上」00:3:8「

如果在格式化方法中使用某種其他日期格式選項?

有小提琴https://3v4l.org/Coi7q

回答

6

利用資本IS爲您的格式:

$size = $dtF->diff($dtT)->format('%H:%I:%S'); 

the manual for all of the formatting options

Demo

+1

是的,作品完美,只是沒有意識到日期時間格式不同於日期()函數 – user5267736

+0

他們通常是相同的,但他們有一些陷阱讓你在腳趾上。 :) –

+0

@ user5267736,日期時間格式是相同的,但是當您使用diff()時,您返回一個DateInterval對象,而不是DateTime對象。 – Devon

3

約翰是正確的,但你的代碼似乎沒有必要,這應該是相同的:

$iSecond = 188; 
$dtT = new DateTime("@$iSecond"); 
$size = $dtT->format('H:i:s'); 

沒有理由創建@ 0的日期時間並在此代碼中使用diff/DateInterval。

+0

謝謝,這個解決方案稍好些 – user5267736