Saat tarih dönüştürmek

5 Cevap php


I'm trying to work with dates for the first time, I did it something about that with Flash but it's different.

Ben iki farklı tarih var ve ben onlarla saat ve gün içinde farkı görmek istiyorum, ben çok örneklerini gördük ama ne için loking ediyorum ettik:

<?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) 
?>

Nasıl ben saat veya gün dönüştürebilirsiniz?

5 Cevap

Eh, her zaman date_diff kullanabilirsiniz, ancak bu 5.3.0 + sadece PHP için

Alternatif matematik olurdu.

Nasıl ben saat veya gün [saniye] dönüştürebilirsiniz?

Dakikada 60 saniye saatte 3600 saniye var demektir vardır.

$hours = $seconds/3600;

Ve, tabii ki, gün ihtiyacınız varsa ...

$days = $hours/24;

'DateTime' diff fonksiyonu DateInterval nesnesi döndürür. Bu amaç, farka göre variabeles oluşur. Sen günler sorgulayabilirsiniz, saat, dakika, yukarıdaki örnekteki gibi saniye.

Örnek:

<?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; 
?>

Bu konuda kılavuzuna bakınız: http://php.net/manual/en/datetime.diff.php. Sadly, it's a PHP 5.3> only feature.

Eğer PHP5.3 dont Eğer kullanıcı adasında dan (taken from WebDeveloper.com) bu yöntemi kullanabilirsiniz

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

TheGrandWazoo> php 5.3 için bir yöntem söz. Alt sürümleri için, gün sayısını bulmak için bir günde saniye sayısı ile iki tarih arasındaki saniye sayısını bölebilirsiniz.

Gün için, bunu:

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

Eğer saatler hala sol kaç bilmek istiyorsanız, size modül (%) operatörünü kullanabilirsiniz

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

Ben dönem / unix zaman deltalar kullanmayı tercih. Zaman saniye temsil ve gibi çok hızlı bir şekilde saat boyunca 3600 ile bölmek ve gün boyunca 24 * 3600 = 86400 bölün.