1

有人可以告诉我如何在 PHP 中将特定时间戳转换为天 - 小时 - 分钟吗?

例如我想得到这样的东西:(20天13小时35分钟)从这样的随机时间戳:534222234

谢谢你。

4

5 回答 5

9
function time2string($time) {
    $d = floor($time/86400);
    $_d = ($d < 10 ? '0' : '').$d;

    $h = floor(($time-$d*86400)/3600);
    $_h = ($h < 10 ? '0' : '').$h;

    $m = floor(($time-($d*86400+$h*3600))/60);
    $_m = ($m < 10 ? '0' : '').$m;

    $s = $time-($d*86400+$h*3600+$m*60);
    $_s = ($s < 10 ? '0' : '').$s;

    $time_str = $_d.':'.$_h.':'.$_m.':'.$_s;

    return $time_str;
}

使用示例:

echo time2string(86500); // 01:00:01:40  dd:hh:mm:ss
于 2013-07-30T08:14:41.513 回答
1

这是我在几分钟内所做的示例,几秒钟

function convertToMinSec($time) {
    $min = intval(($time / 60) % 60);
    $minSec = $min.'m ';

    $sec = intval($time % 60);
    $sec = str_pad($sec, 2, "0", STR_PAD_LEFT);
    $minSec .= $sec.'s';

    return $minSec;
}

这是在几分钟内将时间(以秒为单位)除以 60 并获得 60 的模数。这将获得分钟数。

然后我基本上做同样的事情来获得秒数(mod 是余数)然后如果它低于 10 秒我填充左边

于 2012-10-16T15:30:59.460 回答
1

您可以执行以下操作

$now = date_create("now");
$other_date = date_create("2012/05/10");
$interval = date_diff($now, $other_date);
$interval->format("d h i");
于 2012-10-16T15:48:05.957 回答
0

您可以使用日期函数转换时间戳。

http://de2.php.net/manual/en/function.date.php

于 2012-10-16T15:33:40.847 回答
0

我的代码支持数年和数周

function array2readable($array, $separator, $last_separator) {                              
    $result = preg_replace(strrev("/$separator/"),strrev($last_separator),strrev(implode($separator, $array)), 1);
    return strrev($result);
}

function unixTime2text($time) {
    $value['y'] = floor($time/31536000);
    $value['w'] = floor(($time-($value['y']*31536000))/604800);
    $value['d'] = floor(($time-($value['y']*31536000+$value['w']*604800))/86400);
    $value['h'] = floor(($time-($value['y']*31536000+$value['w']*604800+$value['d']*86400))/3600);
    $value['m'] = floor(($time-($value['y']*31536000+$value['w']*604800+$value['d']*86400+$value['h']*3600))/60);
    $value['s'] = $time-($value['y']*31536000+$value['w']*604800+$value['d']*86400+$value['h']*3600+$value['m']*60);

    $unit['y'] = 'year' . ($value['y'] > 1 ? 's' : '');
    $unit['w'] = 'week' . ($value['w'] > 1 ? 's' : '');
    $unit['d'] = 'day' . ($value['d'] > 1 ? 's' : '');
    $unit['h'] = 'hour' . ($value['h'] > 1 ? 's' : '');
    $unit['m'] = 'minute' . ($value['m'] > 1 ? 's' : '');
    $unit['s'] = 'second' . ($value['s'] > 1 ? 's' : '');

    foreach($value as $key => $val) {
        if (!empty($val)) {
            $not_null_values[] .= $val . ' ' . $unit[$key];
        }
    }

    return array2readable($not_null_values, ', ', ' and ');
}

示例 1

echo unixTime2text(1776900); # 20 days 13 hours 35 minutes

示例 2

echo unixTime2text(534222234); # 16 years, 49 weeks, 3 hours, 3 minutes and 54 seconds
于 2017-07-12T12:34:55.883 回答