如何在PHP中将00:00:00转换为小时、分钟、秒?

如何在PHP中将00:00:00转换为小时、分钟、秒?,php,date,Php,Date,我有以HH:MM:SS格式存储的视频持续时间。我想把它显示为HH小时,MM分钟,SS秒。如果小于1,则不应显示小时数 最好的方法是什么?类似的方法 $vals = explode(':', $duration); if ( $vals[0] == 0 ) $result = $vals[1] . ' minutes, ' . $vals[2] . ' seconds'; else $result = $vals[0] . 'hours, ' . $vals[1] . ' minut

我有以HH:MM:SS格式存储的视频持续时间。我想把它显示为HH小时,MM分钟,SS秒。如果小于1,则不应显示小时数

最好的方法是什么?

类似的方法

$vals = explode(':', $duration);

if ( $vals[0] == 0 )
   $result = $vals[1] . ' minutes, ' . $vals[2] . ' seconds';
else
   $result = $vals[0] . 'hours, ' . $vals[1] . ' minutes, ' . $vals[2] . ' seconds';
尝试使用split

list($hh,$mm,$ss)= split(':',$duration);

一个小小的变化可能是:

$vals = explode(':', $duration);

if ( $vals[0] == 0 )
   $result = "{$vals[1]} minutes, {$vals[2]} seconds";
else
   $result = "{$vals[0]} hours, {$vals[1]} minutes, {$vals[2]} seconds";
explode()表示三色堇。这是我的工作

非常简单:

list( $h, $m, $s) = explode(':', $hms);
echo ($h ? "$h hours, " : "").($m ? "$m minutes, " : "").(($h || $m) ? "and " : "")."$s seconds";

这将仅显示小时或分钟(如果有),并在秒前插入“and”(如果有小时、分钟或两者都要显示)。如果你真的想变得有趣,你可以添加一些代码来显示“小时”与“小时”,视情况而定,分钟和秒也是如此。

这里有一种不同的方式,不同的功能更开放,对新手来说更循序渐进。它还可以处理1小时和许多小时。。。您可以尝试使用相同的逻辑来处理0分零秒

<?php
// your time
$var = "00:00:00";

if(substr($var, 0, 2) == 0){
    $myTime = substr_replace(substr_replace($var, '', 0, 3), ' Minutes, ', 2, 1);
}
elseif(substr($var, 1, 1) == 1){
$myTime = substr_replace(substr_replace($var, ' Hour, ', 2, 1), ' Minutes, ', 11, 1);   
    }
else{
$myTime = substr_replace(substr_replace($var, ' Hours, ', 2, 1), ' Minutes, ', 12, 1);
}
// work with your variable
echo  $myTime .' Seconds';

?>

如果你真的想使用内置函数,也许为了健壮性,你可以试试

 date_default_timezone_set('UTC'); 
 $date = strtotime($hms,0); 

并使用任何日期格式化功能(
date()
strftime()
,等等)以您希望的任何方式格式化时间。或者您可以使用strtime($hms,'%T')
的输出。对于您拥有的简单场景来说,这两种方法都可能有点过头了。

在PHP中将00:00转换为小时、分钟和秒非常容易

$hours=0; $minutes=0;
$seconds=0

我将用不同的方法回答这个问题。我的方法是以秒为单位存储长度。然后,根据需要,使用以下命令可以轻松地将这些秒渲染为hh:mm:ss:

打印gmdate($seconds>=3600?'H:i:s':'i:s',$seconds)(针对您的问题)

或在数据库中搜索长度:


从长度>300的视频中选择*例如,搜索长度超过5分钟的视频。

当php处理时间很好时,为什么还要使用正则表达式或爆炸

$sTime   = '04:20:00';
$oTime   = new DateTime($sTime);
$aOutput = array();
if ($oTime->format('G') > 0) {
    $aOutput[] = $oTime->format('G') . ' hours';
}
$aOutput[] = $oTime->format('i') . ' minutes';
$aOutput[] = $oTime->format('s') . ' seconds';
echo implode(', ', $aOutput);

好处是你可以随意重新设置时间格式(包括am/pm、时区调整、加法/减法等)。

问题应该以问题的形式提出。你认为这是什么,RentACoder?我编辑这个问题是为了符合网站标准。这是我的想法,但我希望有一个更优雅的解决方案,可能会涉及内置php函数。我认为这样的函数不存在。无论如何,如果您将此代码移到一个单独的函数中,而不是内联使用它,那么它应该是一样好的。当然,这样的函数是存在的!!DateTime对象和date(strtotime())可以很好地处理这个问题。我贴了一个例子。:-D。。。。。。。。。。。。。。。。。。。。。。
$sTime   = '04:20:00';
$oTime   = new DateTime($sTime);
$aOutput = array();
if ($oTime->format('G') > 0) {
    $aOutput[] = $oTime->format('G') . ' hours';
}
$aOutput[] = $oTime->format('i') . ' minutes';
$aOutput[] = $oTime->format('s') . ' seconds';
echo implode(', ', $aOutput);