2016-04-04 18 views
1

ben aşağıdaki biçimde bir veritabanına kaydedilir bir tarih ve saat var: 2016-04-03 12:54:11PHP Tarih - biçimlendirme Saat farkı

Temelde, bu tarih ve zaman damgası oluşturulduğu tam tarih ve saat bir şey temsil eder. Yapmaya çalıştığım şey ikinci bir tarih ve saat göstermesi, yani ilk zaman damgasından bu yana geçen günlerin sayısıdır.

dataase damgası 2016-04-03 12:54:11 ve bugünün tarihi ve saati görüntülenebileceğine olurdu 2016-04-04 12:54:11 olduğunu Yani eğer: Overdue by: 1 Day

Şimdiye kadar var: o zaman

<?PHP $dateCreated = mysql_result(mysql_query("SQL to stored date and time"),0); 
       $dateNow = time(); 

       $dateDifference = abs(strtotime($dateCreated) - strtotime($dateNow)); 

       $years = floor($dateDifference/(365*60*60*24)); 
       $months = floor(($dateDifference - $years * 365*60*60*24)/(30*60*60*24)); 
       $days = floor(($dateDifference - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24)); ?> 

Ve:

echo "<strong>Overdue by:</strong> $days Days."; 
Ancak, bu kod 2 tarih olduğunu, 14 gün arayla sadece bir gün arayla olduğunu gösterir.

Yardım edin, şerefe değer.

cevap

1

DateTime nesnelerini kullanmayı deneyin. Hayatını daha kolaylaştıracaklar. yukarıda aşağıdaki elde edilebilir:

$date1 = new DateTime('2016-04-03 12:54:11'); 
$date2 = new DateTime('2016-04-04 12:54:11'); 

$diff = $date1->diff($date2); 

$diff değişkeni sonra iki tarih arasındaki gün miktarını göstermek için bir days özelliği olan bir DateInterval amacı olacaktır. Bu durumda 1'de, bu nedenle yapabilirsiniz: çıktısı Overdue by: 1 days.

echo "Overdue by: " . $diff->days . " days."; 

.

Bir yan notta: gerçektenmysql_ işlevlerini kullanamazsınız. Yıllarca kullanımdan kaldırıldılar ve artık en son PHP sürümünde PHP çekirdeğinin bir parçası değiller. Bu kod, güncel bir sunucuda çalışmaz. Ayrıca bkz .: Why shouldn't I use mysql_* functions in PHP?

+0

Ben sadece hızlı bir gösteri için bir şey yaratmak ediyorum mysql_ fonksiyonlarının farkındayım :) Teşekkür olsa! –

0

Bunu yapmanın en iyi yolu, Php DateTime sınıfı cadı kullanmamızı sağladığını düşünüyorum.

bu deneyin:

$datetime1 = new DateTime("YOUR_DB_TIMESTAMP"); 
$datetime2 = new DateTime("today"); 

$difference = $datetime1->diff($datetime2); 

echo difference->d; 

Ayrıca, size diference göstermek istediğiniz şekilde seçebilirsiniz.

$diff->format('%R%a days') 

Referans:

örnek->Finding the number of days between two dates
DateTime Doc ->http://php.net/manual/es/class.datetime.php Selamlar!

0

Böyle şeyler için DateTime nesnesini kullanacağım, çünkü gerçekten çok büyük bir yardım.

$dateCreatedObj = DateTime::createFromFormat('Y-m-d H:i:s', $dateCreated); 
$dateNowObj = new DateTime(); 
$dateDifference = $dateCreatedObj->diff($dateNowObj); 
echo $dateDifference->format('Overdue by: %a Day'); 

Lütfen bunun saat dilimlerini, çok dilli ve çoğul sorunları işlemediğini unutmayın.

0

Diff işlevi, iki DateTimeInterface nesnesi arasındaki farkı döndürür.

Sen DateTime nesnesini kullanmayı deneyebilirsiniz:

<?PHP $dateCreated = mysql_result(mysql_query("SQL to stored date and time"),0); 
     $dateNow = new DateTime(); 
     $dateOther = new DateTime($dateCreated); 
     $interval = $dateNow->diff($dateOther); 
     echo $interval->format('%R%a days');