用前导零格式化PHP DateInterval中的分钟和秒数

3

尝试从秒数生成简单的“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"

如果在格式方法中有其他日期格式选项可用吗?

这里有一个fiddle https://3v4l.org/Coi7q

2个回答

14
使用大写字母IS进行格式设置:
$size = $dtF->diff($dtT)->format('%H:%I:%S');

请参阅手册以获取所有格式选项。

演示


1
没错,运行完美,只是没有意识到 DateTime 格式与 date() 函数不同。 - user5267736
1
它们通常是相同的,但有一些需要注意的地方,以保持你的警觉。 :) - John Conde
1
@user5267736,DateTime格式是相同的,但当您使用diff()时,返回的是DateInterval对象,而不是DateTime对象。 - Devon

4
约翰是正确的,但是您的代码似乎是不必要的,应该是相同的:
$iSecond = 188;
$dtT = new DateTime("@$iSecond");
$size = $dtT->format('H:i:s');

这段代码中没有必要创建一个@0的datetime并使用diff/DateInterval。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接