php date一分钟前,PHP date()小时,分钟和秒,没有前导零

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:

Convert seconds to Hour:Minute:Second

我一直在网上搜索找到一个很好的方法将秒转换为分钟:秒没有前导零。 我已经检查过这个问题,这是我唯一能找到的问题,但这些答案都不是很好。 也许他们是实现这一目标的唯一和最佳方式,但我希望不会。

我做了这个,它给了我没有前导零的分钟数,但是我无法得到秒。 我能想到这样做的唯一方法就是做几行数学等等,但这对于像这样简单的事情似乎是一项非常多的工作......我不知道为什么PHP没有 无论如何都要内置几分钟和几秒钟....

intval(gmdate("i:s", $duration));

编辑

我所要做的就是将视频中的秒数转换为H:M:S格式。

你需要什么intval()? 你为什么要加它?

嗯,这是我的问题中另一个溢出问题的答案之一,它删除了零,以及其他一切......

不,不。 在随机应用函数之前,请阅读文档:php.net/intval

就像我说的那样,我自己并没有应用它,这是关于这个唯一主题的少数几个答案之一,如果我没有弄错的话,有人会这样说几次。 另外,我只是说明它对我的日期做了什么,它确实删除了零和非数值。

"就像我说的那样,我自己并没有应用它,这是关于唯一主题的少数答案之一" - 更糟糕的是。 这是一个程序员社区,而不是代码复制粘贴者。

这不是那个帖子的重复,我想删除前导零...那个不.....

我会迭代地写它:

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只有特权才知道为什么,也许他们用完了有用的字母作为格式说明符;-)

implode(

':',

array_map(

function($i) { return intval($i, 10); },

explode(':', gmdate('H:i:s', $duration))

)

)

however what about if hour==0 then do not print 0: and just have m:s

preg_replace(

'~^0:~',

'',

implode(

':',

array_map(

function($i) { return intval($i, 10); },

explode(':', gmdate('H:i:s', $duration))

)

)

)

在1行中拥有一切的好工作:)。

谢谢,这确实有预期的结果。我没有问这个问题,但是如果小时== 0则不打印0:只有m:s

@Dylan Cross:见版本2

所有持续时间<86400秒:)

实际上......我现在觉得非常愚蠢,只是这样做才是我真正需要的。后来我意识到我实际上并不想要在几秒钟内删除前导零。 preg_replace('~^00:0~','', gmdate("H:i:s", $duration));

gmdate将时间戳作为第二个参数。

你应该做这样的事情:

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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值