0
echo date('H:i', time()); // 10:15    
echo date('H:i', strtotime($this->deadline)); // 10:05
$delay = time() - strtotime($this->deadline);
echo date('H:i', $delay); // 02:10 

なぜdelay10分ではなく2時間10分なのですか?

タイムゾーンと関係があると思います。今はヨーロッパ/ヘルシンキです。しかし、どうすれば2つのタイムスタンプの絶対差を取得できますか?

編集

echo time(); // 1339745334
echo strtotime($this->deadline); // 1339657500
4

3 に答える 3

1

$delayは実際には適切なタイムスタンプではありません。これは、2つのタイムスタンプの違いであり、1まで低くなる可能性があります。mktime()関数は、ここで役立つ可能性があります。

于 2012-06-15T07:25:15.347 に答える
0

このコードを試してください

date_diff($time_start, $time_ends);

function date_diff($d1, $d2){
        $d1 = (is_string($d1) ? strtotime($d1) : $d1);
        $d2 = (is_string($d2) ? strtotime($d2) : $d2);
        $diff_secs = abs($d1 - $d2);
        $base_year = min(date("Y", $d1), date("Y", $d2));
        $diff = mktime(0, 0, $diff_secs, 1, 1, $base_year);
        return array(
            "years" => date("Y", $diff) - $base_year,
            "months_total" => (date("Y", $diff) - $base_year) * 12 + date("n", $diff) - 1,
            "months" => date("n", $diff) - 1,
            "days_total" => floor($diff_secs / (3600 * 24)),
            "days" => date("j", $diff) - 1,
            "hours_total" => floor($diff_secs / 3600),
            "hours" => date("G", $diff),
            "minutes_total" => floor($diff_secs / 60),
            "minutes" => (int) date("i", $diff),
            "seconds_total" => $diff_secs,
            "seconds" => (int) date("s", $diff)
        );
    }
于 2012-06-15T07:32:18.127 に答える
0

リアルタイムで表示したい場合は、違いに応じて時間をフォーマットする必要があります。必要に応じて拡張できる関数の例を次に示します。

function time_diff($format,$seperator,$delay){

    $days = floor($delay/86400);
    $hours = floor(($delay%86400)/3600);
    $mins = floor(($delay%3600)/60);
    $secs = floor(($delay%60));

    $format = explode($seperator,$format);
    $return = "";

    foreach($format as $value){

        if(strlen($return) > 0){
            $return .= $seperator;
        }

        switch($value){
            case 'H':{
                $return .= $hours;
                break;
            }
            case 'i':{
                $return .= $mins;
                break;
            }
            case 'z':{
                $return .= $days;
                break;
            }
            case 's':{
                $return .= $secs;
                break;
            }
        }

        return $return;                    
    }

使用法:function_time_diff("H:i",':',$delay)=>フォーマットされた遅延。

于 2012-06-15T08:16:07.717 に答える