为了账号安全,请及时绑定邮箱和手机立即绑定

将秒转换为天、小时、分钟和秒

/ 猿问

将秒转换为天、小时、分钟和秒

PHP
牧羊人nacy 2019-10-12 16:07:03

将秒转换为天、小时、分钟和秒

我想转换一个变量$uptime这是秒,分为几天、几个小时、几分钟和几秒。

例子:

$uptime = 1640467;

结果应该是:

18 days 23 hours 41 minutes


查看完整描述

3 回答

?
杨魅力

这可以通过DateTime班级,等级

用途:

echo secondsToTime(1640467);# 18 days, 23 hours, 41 minutes and 7 seconds

职能:

function secondsToTime($seconds) {
    $dtF = new \DateTime('@0');
    $dtT = new \DateTime("@$seconds");
    return $dtF->diff($dtT)->format('%a days, %h hours, %i minutes and %s seconds');}

演示



查看完整回答
反对 回复 2019-10-13
?
慕仰8121524

这是重写为包含天的函数。我还更改了变量名以使代码更容易理解.

/** 
 * Convert number of seconds into hours, minutes and seconds 
 * and return an array containing those values 
 * 
 * @param integer $inputSeconds Number of seconds to parse 
 * @return array 
 */ function secondsToTime($inputSeconds) {

    $secondsInAMinute = 60;
    $secondsInAnHour  = 60 * $secondsInAMinute;
    $secondsInADay    = 24 * $secondsInAnHour;

    // extract days
    $days = floor($inputSeconds / $secondsInADay);

    // extract hours
    $hourSeconds = $inputSeconds % $secondsInADay;
    $hours = floor($hourSeconds / $secondsInAnHour);

    // extract minutes
    $minuteSeconds = $hourSeconds % $secondsInAnHour;
    $minutes = floor($minuteSeconds / $secondsInAMinute);

    // extract the remaining seconds
    $remainingSeconds = $minuteSeconds % $secondsInAMinute;
    $seconds = ceil($remainingSeconds);

    // return the final array
    $obj = array(
        'd' => (int) $days,
        'h' => (int) $hours,
        'm' => (int) $minutes,
        's' => (int) $seconds,
    );
    return $obj;}

资料来源:Codeaid()-http:/codeaid.net/php/转换-秒-小时-分钟-和-秒-(Php)



查看完整回答
反对 回复 2019-10-13
?
慕少森

基于JulianMoreno的回答,但更改为将响应作为字符串(而不是数组),只包括所需的时间间隔,而不假定为复数。

这与最高投票的答案之间的区别是:

259264几秒钟这段代码会给

3天1分4秒

259264秒,最高得票率(Glavić)会给

三天,0小时,1分钟S和4秒

function secondsToTime($inputSeconds) {
    $secondsInAMinute = 60;
    $secondsInAnHour = 60 * $secondsInAMinute;
    $secondsInADay = 24 * $secondsInAnHour;

    // Extract days
    $days = floor($inputSeconds / $secondsInADay);

    // Extract hours
    $hourSeconds = $inputSeconds % $secondsInADay;
    $hours = floor($hourSeconds / $secondsInAnHour);

    // Extract minutes
    $minuteSeconds = $hourSeconds % $secondsInAnHour;
    $minutes = floor($minuteSeconds / $secondsInAMinute);

    // Extract the remaining seconds
    $remainingSeconds = $minuteSeconds % $secondsInAMinute;
    $seconds = ceil($remainingSeconds);

    // Format and return
    $timeParts = [];
    $sections = [
        'day' => (int)$days,
        'hour' => (int)$hours,
        'minute' => (int)$minutes,
        'second' => (int)$seconds,
    ];

    foreach ($sections as $name => $value){
        if ($value > 0){
            $timeParts[] = $value. ' '.$name.($value == 1 ? '' : 's');
        }
    }

    return implode(', ', $timeParts);}

希望这能帮上忙。



查看完整回答
反对 回复 2019-10-13

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信