2

秒から単純な「H:i:s」文字列を生成しようとしていますが、できません

例:

$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" です。

format メソッドで使用する別の日付形式オプションがある場合は?

フィドルがあります https://3v4l.org/Coi7q

4

2 に答える 2

11

フォーマットには大文字ISを使用します。

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

すべての書式設定オプションについては、マニュアルを参照してください

デモ

于 2015-09-24T13:38:06.867 に答える
3

ジョンは正しいですが、あなたのコードは不要のようです。これは同じはずです:

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

@0 の日時を作成し、このコードで diff/DateInterval を使用する理由はありません。

于 2015-09-24T13:45:05.417 に答える