在PHP中将秒转换为小时/分钟/秒

在PHP中将秒转换为小时/分钟/秒,php,time,Php,Time,可能重复: 我有一个整数作为秒数。我想将该整数转换为小时/分/秒,如下所示: 1:45:32 3:25 如果秒数等于小于一小时,则应返回字符串: 45:32 如果分钟数小于10,则应返回如下格式的字符串: 1:45:32 3:25 最后,如果秒数等于小于1分钟,则应返回以下内容: 0:04 在PHP中实现这一点的最佳方法是什么?考虑使用&然后应用小于&大于的逻辑 考虑使用&然后应用小于&大于的逻辑 最简单的方法是 if($seconds < 3600){ $format =

可能重复:

我有一个整数作为秒数。我想将该整数转换为小时/分/秒,如下所示:

1:45:32
3:25
如果秒数等于小于一小时,则应返回字符串:

45:32
如果分钟数小于10,则应返回如下格式的字符串:

1:45:32
3:25
最后,如果秒数等于小于1分钟,则应返回以下内容:

0:04

在PHP中实现这一点的最佳方法是什么?

考虑使用&然后应用小于&大于的逻辑

考虑使用&然后应用小于&大于的逻辑

最简单的方法是

if($seconds < 3600){
 $format = 'i:s';
}else{
 $format = 'G:i:s';
}

echo date($format, $seconds);

最简单的方法是

if($seconds < 3600){
 $format = 'i:s';
}else{
 $format = 'G:i:s';
}

echo date($format, $seconds);


我认为这非常接近:

foreach(array(60 => ' 0:s', 3600 => 'i:s', 'G:i:s') as $val => $format)
{
    if ($seconds < $val) break;
}
echo ltrim(ltrim(gmdate($format, $seconds), '0'), ' ');
foreach(数组(60=>'0:s',3600=>'i:s',G:i:s')为$val=>$format)
{
如果($seconds<$val)中断;
}
echo ltrim(ltrim(gmdate($format,$seconds),'0'),'';
此变体使用存储在数组中的配置,该配置基于以秒为单位的时间值(作为键)关联格式字符串。最后一个元素是将要使用的默认格式

编辑:不幸的是,中没有格式代码允许指定没有前导的分钟数。因此,需要重新格式化日期字符串以删除前导0。这里就结束了。

我觉得很接近:

foreach(array(60 => ' 0:s', 3600 => 'i:s', 'G:i:s') as $val => $format)
{
    if ($seconds < $val) break;
}
echo ltrim(ltrim(gmdate($format, $seconds), '0'), ' ');
foreach(数组(60=>'0:s',3600=>'i:s',G:i:s')为$val=>$format)
{
如果($seconds<$val)中断;
}
echo ltrim(ltrim(gmdate($format,$seconds),'0'),'';
此变体使用存储在数组中的配置,该配置基于以秒为单位的时间值(作为键)关联格式字符串。最后一个元素是将要使用的默认格式



编辑:不幸的是,中没有格式代码允许指定没有前导的分钟数。因此,需要重新格式化日期字符串以删除前导0。在这里就完成了。

他们中的大多数人将每一个都分为一小时计算、分钟计算和第二次计算。只需使用一些
if()
语句进行测试。您还应该确保在向用户显示时明确使用了什么格式,因为按照您的意愿进行切换会让人感到困惑。我开始使用gmdate函数gmdate(“H:I:s”,$seconds),它返回完整的HH:MM:SS字符串。在此之后,我尝试了其他几种方法,我在各种网站上找到了这些方法,包括堆栈溢出。但它们都没有像我描述的那样省略字符串的“小时”部分和前导零。输出用于描述音频文件中的时间位置,上述格式是使用音频时描述此类长度/位置的标准方式。因此,在询问重复之前,请下次使用搜索功能。不是重复的,需要的格式是(HH:)M:SS@Gordon建议总是受欢迎的。我的意图是永远不会冒犯任何人,恰恰相反。事实正如我所说的那样(就我的PHP知识水平而言),我不得不承认,我问了一个问题,这个问题的答案在今天上午的大部分时间里都没有找到,这似乎让你感到有点困惑。不管怎样,你的建议显然是正确的,即使我不同意它的语气。为此,我要感谢你们。他们中的大多数人将每一个都分成一小时计算、一分钟计算和第二次计算。只需使用一些
if()
语句进行测试。您还应该确保在向用户显示时明确使用了什么格式,因为按照您的意愿进行切换会让人感到困惑。我开始使用gmdate函数gmdate(“H:I:s”,$seconds),它返回完整的HH:MM:SS字符串。在此之后,我尝试了其他几种方法,我在各种网站上找到了这些方法,包括堆栈溢出。但它们都没有像我描述的那样省略字符串的“小时”部分和前导零。输出用于描述音频文件中的时间位置,上述格式是使用音频时描述此类长度/位置的标准方式。因此,在询问重复之前,请下次使用搜索功能。不是重复的,需要的格式是(HH:)M:SS@Gordon建议总是受欢迎的。我的意图是永远不会冒犯任何人,恰恰相反。事实正如我所说的那样(就我的PHP知识水平而言),我不得不承认,我问了一个问题,这个问题的答案在今天上午的大部分时间里都没有找到,这似乎让你感到有点困惑。不管怎样,你的建议显然是正确的,即使我不同意它的语气。为此,我感谢你们。你们将如何分解一个整数值?(他已经有秒了…)你将如何分解整数值?(他已经有秒了……)谢谢鲁菲努斯,这是一个令人尴尬的简单解决方案。但是,php日期函数似乎不支持没有前导零的“分钟”,我需要前导零。但是它非常接近。完美!这是一个非常好/简单的方法,效果非常好。非常感谢@鲁菲努斯:你的答案;)几乎!不要忘记GMT偏移量,使用gmdate()而不是date()。感谢Rufinus,这是一个令人尴尬的简单解决方案。但是,php日期函数似乎不支持没有前导零的“分钟”,我需要前导零。但是它非常接近。完美!这是一个非常好/简单的方法,效果非常好。非常感谢@鲁菲努斯:你的答案;)几乎!别忘了GMT偏移量,用gmdate()代替date()。我喜欢你的定义。。。对于这种情况,在未来1000年的某个时候,一小时有3600多秒:-)这是关于代码可读性的<代码>$seconds%seconds\u IN\u MINUTE比更具描述性