PHP date() Hours, Minutes and Seconds without leading zeros
Possible Duplicate:
Convert seconds to Hour:Minute:Second
我一直在网上搜索找到一个很好的方法将秒转换为分钟:秒没有前导零。 我已经检查过这个问题,这是我唯一能找到的问题,但这些答案都不是很好。 也许他们是实现这一目标的唯一和最佳方式,但我希望不会。
我做了这个,它给了我没有前导零的分钟数,但是我无法得到秒。 我能想到这样做的唯一方法就是做几行数学等等,但这对于像这样简单的事情似乎是一项非常多的工作......我不知道为什么PHP没有 无论如何都要内置几分钟和几秒钟....
编辑
我所要做的就是将视频中的秒数转换为H:M:S格式。
-
你需要什么intval()? 你为什么要加它?
-
嗯,这是我的问题中另一个溢出问题的答案之一,它删除了零,以及其他一切......
-
不,不。 在随机应用函数之前,请阅读文档:php.net/intval
-
就像我说的那样,我自己并没有应用它,这是关于这个唯一主题的少数几个答案之一,如果我没有弄错的话,有人会这样说几次。 另外,我只是说明它对我的日期做了什么,它确实删除了零和非数值。
-
"就像我说的那样,我自己并没有应用它,这是关于唯一主题的少数答案之一" - 更糟糕的是。 这是一个程序员社区,而不是代码复制粘贴者。
-
这不是那个帖子的重复,我想删除前导零...那个不.....
我会迭代地写它:
1 2 3 4 5 6 7 8 9 10 11 12
| function duration_to_timestring ($duration)
{
$s = [];
if ($duration > 3600) {
$s[] = floor($duration / 3600);
$duration %= 3600;
}
$s[] = floor($duration / 60);
$s[] = floor($duration % 60);
return join(':', $s);
} |
-
这也很好,虽然我仍然无法弄清楚为什么php不包括没有前导零的分钟和秒。
-
@DylanCross只有特权才知道为什么,也许他们用完了有用的字母作为格式说明符;-)
however what about if hour==0 then do not print 0: and just have m:s
-
在1行中拥有一切的好工作:)。
-
谢谢,这确实有预期的结果。我没有问这个问题,但是如果小时== 0则不打印0:只有m:s
-
@Dylan Cross:见版本2
-
所有持续时间<86400秒:)
-
实际上......我现在觉得非常愚蠢,只是这样做才是我真正需要的。后来我意识到我实际上并不想要在几秒钟内删除前导零。 preg_replace('~^00:0~','', gmdate("H:i:s", $duration));
gmdate将时间戳作为第二个参数。
你应该做这样的事情:
1
| echo gmdate("H:i:s", mktime(0, 0, 0, 1, 1, 1998) + $duration); |
intval不应该存在,因为你得到一个字符串并再次将它转换为int。 H:i:s你有10:40:05。
但是,如果持续时间> 24小时,则无效。
-
我想删除前导零,但上面的代码没有。
-
如果你想要没有前导0那么你将不得不使用$ hours = date("h",mktime(0,0,0,1,1,1998)+ $ duration); $ minutes = intval(date("i",mktime(0,0,0,1,1,1998)+ $ duration)); $ seconds = intval(日期("??s",mktime(0,0,0,1,1,1998)+ $ duration));
-
我编辑了我的代码,我觉得你应该使用date而不是gmdate。否则现在可??能不准确,具体取决于服务器日期。
-
谢谢,唯一的问题是小时一,它应该为零,现在是12,但在你编辑它之前,它是5。
-
你是对的应该是$ hours = date("G",mktime(0,0,0,1,1,1998)+ $ duration);