0

人間が読める時間を出力する SC 形式の関数を見つけました。`のように

5時間、1時間、5年など

function human_time ($time)
{

    $time = time() - strtotime($time); // to get the time since that moment
    $tokens = array (
        31536000 => 'year',
        2592000 => 'month',
        604800 => 'week',
        86400 => 'day',
        3600 => 'hour',
        60 => 'minute',
        1 => 'second'
    );

    foreach ($tokens as $unit => $text) {
        if ($time < $unit) continue;
        $numberOfUnits = floor($time / $unit);
        return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
    }

}

そして、私は文字列として時間を持っています:2013-09-28 20:55:42

この関数を呼び出すとhuman_time('2013-09-28 20:55:42')

何も返さないのはなぜですか?strtotime上記の機能を追加しました。

何が悪いのか教えてください。

4

2 に答える 2

1

これはすぐに使用できるコードではありませんが、正しい方法をガイドすることになっています。

$then = new DateTime($time); // you might need to format $time using strtotime or other functions depending on the format provided
$now = new DateTime();
$diff = $then->diff($now, true);
echo $diff->format('Your style goes here');

詳細なドキュメントについては、 DateTime マニュアルを参照するか、こちらからお気軽にお問い合わせください。

編集:リンクが修正されました。

于 2013-09-28T15:51:02.863 に答える
1

使用例:

echo time_elapsed_string('2013-05-01 00:22:35');
echo time_elapsed_string('2013-05-01 00:22:35', true);

出力:

4 months ago
4 months, 2 weeks, 3 days, 1 hour, 49 minutes, 15 seconds ago

関数にリンクします。

于 2013-09-29T22:36:40.433 に答える