0

私は初めて日付を処理しようとしています。Flashでそれについて何かをしましたが、それは異なります。

私には2つの異なる日付があり、それらとの時間と日の違いを確認したいのですが、例が多すぎますが、私が探しているものではありません。

<?php
    $now_date = strtotime (date ('Y-m-d H:i:s')); // the current date 
    $key_date = strtotime (date ("2009-11-21 14:08:42"));
    print date ($now_date - $key_date);
    // it returns an integer like 5813, 5814, 5815, etc... (I presume they are seconds) 
?>

どうすればそれを時間または日に変換できますか?

4

6 に答える 6

5

diff関数はオブジェクトDateTimeを返しDateIntervalます。このオブジェクトは、違いに関連する変数で構成されています。上記の例のように、日、時間、分、秒をクエリできます。

例:

<?php 
 $dateObject = new DateTime(); // No arguments means 'now'
 $otherDateObject = new DateTime('2008-08-14 03:14:15');
 $diffObject = $dateObject->diff($otherDateObject)); 
 echo "Days of difference: ". $diffObject->days; 
?>

についてのマニュアルを参照してくださいDateTime

悲しいことに、これはPHP5.3>のみの機能です。

于 2009-11-22T14:52:00.350 に答える
1

ええと、いつでもdate_diffを使用できますが、それはPHP5.3.0以降のみです。

代替案は数学でしょう。

[秒]を時間または日に変換するにはどうすればよいですか?

1分あたり60秒あります。つまり、1時間あたり3600秒です。

$hours = $seconds/3600;

そして、もちろん、あなたが日を必要とするならば...

$days = $hours/24;
于 2009-11-22T14:55:23.023 に答える
1

PHP5.3をお持ちでない場合は、ユーザーランド(WebDeveloper.comから取得)からこのメソッドを使用できます。

function date_time_diff($start, $end, $date_only = true)  // $start and $end as timestamps
{
    if ($start < $end) {
        list($end, $start) = array($start, $end);
    }
    $result = array('years' => 0, 'months' => 0, 'days' => 0);
    if (!$date_only) {
        $result = array_merge($result, array('hours' => 0, 'minutes' => 0, 'seconds' => 0));
    }
    foreach ($result as $period => $value) {
        while (($start = strtotime('-1 ' . $period, $start)) >= $end) {
            $result[$period]++;
        }
        $start = strtotime('+1 ' . $period, $start);
    }
    return $result;
}

$date_1 = strtotime('2005-07-31');
$date_2 = time();
$diff = date_time_diff($date_1, $date_2);
foreach ($diff as $key => $val) {
    echo $val . ' ' . $key . ' ';
}

// Displays:
// 3 years 4 months 11 days 
于 2009-11-22T14:57:10.137 に答える
0

TheGrandWazooは、php5.3のメソッドについて言及しました>。下位バージョンの場合、2つの日付の間の秒数を、1日の秒数で割って、日数を求めることができます。

何日もの間、あなたはします:

$days = floor(($now_date - $key_date) / (60 * 60 * 24))

まだ何時間残っているか知りたい場合は、モジュロ演算子(%)を使用できます。

$hours = floor((($now_date - $key_date) % * (60 * 60 * 24)) / 60 * 60)
于 2009-11-22T14:56:52.910 に答える
0
<?php
    $now_date = strtotime (date ('Y-m-d H:i:s')); // the current date 
    $key_date = strtotime (date ("2009-11-21 14:08:42"));
    $diff = $now_date - $key_date;
    $days    = floor($diff/(60*60*24));
    $hours   = floor(($diff-($days*60*60*24))/(60*60));
    print $days." ".$hours." difference";
?>
于 2009-11-22T14:57:00.557 に答える
0

私はエポック/UNIXタイムデルタを使用することを好みます。時間は秒で表されるため、時間の場合は3600で、日数の場合は24 * 3600=86400で非常にすばやく除算できます。

于 2009-11-22T14:57:06.253 に答える