如何将秒转换为时间格式?

Dew*_*159 56 php format time

由于某种原因,我转换时间格式,如:03:30 to seconds 3*3600 + 30*60, now.我想把它转换回它的第一个(相同)格式.怎么会这样?

我的尝试:

3*3600 + 30*60 = 12600 

12600 / 60 = 210 / 60 = 3.5, floor(3.5) = 3 = hour
Run Code Online (Sandbox Code Playgroud)

现在,分钟呢?

考虑到价值可能就像19:00 or 02:51. 我认为你得到的图片.

顺便说一句,如何转换 2:0 for example to 02:00 using RegEx?

Cyb*_*kie 166

这可能更简单

gmdate("H:i:s", $seconds)

PHP gmdate

  • 这只能工作24小时,然后重置为00:00:00 (27认同)
  • 然后让它换行:`gmdate("H:i:s",$ seconds%86400)` (9认同)

ITr*_*ubs 122

$hours = floor($seconds / 3600);
$mins = floor($seconds / 60 % 60);
$secs = floor($seconds % 60);
Run Code Online (Sandbox Code Playgroud)

如果你想获得时间格式:

$timeFormat = sprintf('%02d:%02d:%02d', $hours, $mins, $secs);
Run Code Online (Sandbox Code Playgroud)

  • 剩余的秒数:`$ secs = floor(($秒 - ($小时*3600( - ($ mins*60))); (11认同)
  • `$天 = 下限($秒 / 86400); $hours = Floor($seconds % 86400 / 3600);` 对于有天数的版本 (2认同)

Spu*_*ley 16

如果你知道时间不到一个小时,你可以使用date()$date->format()函数.

$minsandsecs = date('i:s',$numberofsecs);
Run Code Online (Sandbox Code Playgroud)

这是因为系统纪元时间从午夜开始(1970年1月1日,但这对你来说并不重要).

如果它是一个小时或更长但不到一天,你可以输出几小时:分钟:秒格式与`

$hoursminsandsecs = date('H:i:s',$numberofsecs);
Run Code Online (Sandbox Code Playgroud)

超过一天,您将需要使用模数来计算天数,因为这是该时期的开始日期将变得相关的地方.

希望有所帮助.

  • 从来没有这样做过!它是神秘虫子的来源.要了解原因,请尝试将时区设置为UTC + 1并打印"date(0)".结果,将是3点. (3认同)

mar*_*nti 12

也许最简单的方法是:

gmdate('H:i:s', $your_time_in_seconds);
Run Code Online (Sandbox Code Playgroud)


Ham*_*ite 10

$time时间为秒数.

$seconds = $time % 60;
$time = ($time - $seconds) / 60;
$minutes = $time % 60;
$hours = ($time - $minutes) / 60;
Run Code Online (Sandbox Code Playgroud)

现在的小时,分钟和秒都在$hours,$minutes$seconds分别.


GZi*_*ipp 8

另一种解决方案,可以为您提供传入秒值的天,小时,分钟和秒:

function seconds_to_time($secs)
{
    $dt = new DateTime('@' . $secs, new DateTimeZone('UTC'));
    return array('days'    => $dt->format('z'),
                 'hours'   => $dt->format('G'),
                 'minutes' => $dt->format('i'),
                 'seconds' => $dt->format('s'));
}

print_r(seconds_to_time($seconds_value);
Run Code Online (Sandbox Code Playgroud)

如果预计时间超过一年,"天"将需要额外的逻辑.使用str_pad()ltrim()添加/删除前导零.


小智 7

如果您要对其进行硬编码,则可以使用模数来提取其他人建议的时间.

如果您从MySQL数据库返回秒数,假设您不需要在应用程序中以秒格式显示数据,则可以使用更简洁的方法,可以使用MySQL的SEC_TO_TIME,它将以hh:mm返回时间: ss格式.

例如.

SELECT SEC_TO_TIME(my_seconds_field) AS my_timestring;
Run Code Online (Sandbox Code Playgroud)


小智 7

当您想要使用此代码将秒数转换为时间格式(如小时:分钟:秒)时,ITroubs的答案不会处理剩下的秒数

以下是我处理此问题的方法:(这也会将前导零加至一位数分钟和秒)

$seconds = 3921; //example

$hours = floor($seconds / 3600);
$mins = floor(($seconds - $hours*3600) / 60);
$s = $seconds - ($hours*3600 + $mins*60);

$mins = ($mins<10?"0".$mins:"".$mins);
$s = ($s<10?"0".$s:"".$s); 

$time = ($hours>0?$hours.":":"").$mins.":".$s;
Run Code Online (Sandbox Code Playgroud)

在这个例子中,$ time将包含"1:05:21".