由于某种原因,我转换时间格式,如: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)
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)
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)
超过一天,您将需要使用模数来计算天数,因为这是该时期的开始日期将变得相关的地方.
希望有所帮助.
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
分别.
另一种解决方案,可以为您提供传入秒值的天,小时,分钟和秒:
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".