2011-09-19 19 views
8

Mam zapisaną datę lubię to "2011-09-23 19:10:18" I chcę, aby dni i godziny pozostały , aż do osiągnięcia tej daty. Jak mogę to zrobić? Próbowałem z podręcznikiem php, ale wszystko, co znajduję, to po prostu klasy, których nie zamierzam używać, ponieważ reszta aplikacji jest napisana procuderalnie.PHP - ile dni zostało godzin od daty

Odpowiedz

19

PHP:

<?php 

//Convert to date 
$datestr="2011-09-23 19:10:18";//Your date 
$date=strtotime($datestr);//Converted to a PHP date (a second count) 

//Calculate difference 
$diff=$date-time();//time returns current time in seconds 
$days=floor($diff/(60*60*24));//seconds/minute*minutes/hour*hours/day) 
$hours=round(($diff-$days*60*60*24)/(60*60)); 

//Report 
echo "$days days $hours hours remain<br />"; 
?> 

Uwaga godzina-okrągłe i nie minuty/sekundy rozpatrzenie oznacza, że ​​może być nieco niedokładne .

+0

ten powinien odpowiedzieć na zadane pytanie. dzięki, pomógł mi także – od3n

17

To powinno zasiać Twoje starania.

getdate(strtotime("2011-09-23 19:10:18")) 

Pełna konwersja:

$seconds = strtotime("2011-09-23 19:10:18") - time(); 

$days = floor($seconds/86400); 
$seconds %= 86400; 

$hours = floor($seconds/3600); 
$seconds %= 3600; 

$minutes = floor($seconds/60); 
$seconds %= 60; 


echo "$days days and $hours hours and $minutes minutes and $seconds seconds"; 
1

byłoby coś

echo $date = date("Y-m-d H:i:s");echo "\n"; 

$original=time($date); 


$modified = "2011-09-23 19:10:18"; 

echo date("Y-m-d H:i:s",$modified);echo "\n"; 
0

można znaleźć aktualną datę i czas za pomocą date() i odejmujemy

$ X = 2011-09-23 - current_date

to da ci nie. pozostało dni.

Czy samo czasu, jak również ..

Nadzieja to pomaga fragment

+0

To nie działa. –

2

Oto dobre wyjaśnienie, warto spojrzeć na this

+0

wygląda jak dobre referencje. dzięki za udostępnienie. – od3n

15

od PHP 5.3.0 można użyć wbudowany w obiekt Date:

$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 

http://www.php.net/manual/en/book.datetime.php

+0

Po prostu zastanawiałem się, jakich parametrów mogę użyć. Oto odpowiedź: http://php.net/manual/en/dateinterval.format.php#refsect1-dateinterval.format-parameters –

1

Najprostszym sposobem jest poprawiona odpowiedź od CountZero. Używałem tego rozwiązania do liczenia czasu pozostającego do wygaśnięcia oferty. Dodatek do pierwszych trzech linii kodu CountZero:

$days = $interval->d; 
$hours = $interval->h; 
$minutes = $interval->i; 
$seconds = $interval->s; 

i teraz, można użyć funkcji ciągów do umiarkowanego swoje wartości zwracanych, aby połączyć wszystkie lub dodać „0” lub „00” przed wartościami.