2010-04-22 20 views
8

szukałem na tym stanowisku, i to jest blisko do czego potrzebuję: PHP - How to count 60 days from the add datePHP Obliczanie przyszłą datę dodając dni do zmiennej daty

Jednakże w tym poście, obliczenia przeprowadza się przez dodanie 60 dni do bieżącej daty. Muszę obliczyć datę na podstawie daty zmiennej (, a nie bieżącej daty).

coś takiego:

$my_date = $some_row_from_a_database; 
$date_plus_10_days = ???; 

Ktoś wie jak to zrobić?

Dzięki

+0

Jaki jest format daty w bazie danych (sygnatura czasowa)? –

Odpowiedz

26

można umieścić coś przed "+10 dni" część:

strtotime("2010-01-01 +10 days"); 
+4

+1 nauczyłem się dzisiaj czegoś nowego. Dzięki. Prawdopodobnie OP chce zamienić z powrotem na jakiś czytelny ludzki ciąg znaków. Tak więc coś w rodzaju daty ("Y-m-d", strtotime ("2010-01-01 +10 dni")); – zaf

+4

'strototime' przyjmuje znacznik czasu jako drugi argument, który będzie używany jako referencyjny znacznik czasu dla tego, co wstawisz jako pierwszy argument, więc jeśli OP ma znacznik czasu z MySQL, równie dobrze może on zrobić' strtotime ('+ 60 dni ', $ timestampFromMySql); ' – Gordon

+0

perfect - thanks! – OneNerd

1

widzę, że jesteś pobierające dane z baza danych. Jeśli używasz mysql można to zrobić na Wybierz:

Przykład: trzeba ostatnią datę stole i tę datę-7 dni

select max(datefield) as ultimaf, DATE_SUB(max(datefield),INTERVAL 7 DAY) as last7 
from table 

its łatwy w użyciu CURDATE(), jeśli chcesz dzisiejszą datę.

Jeśli potrzebujesz dynamiczna pomiędzy które wybiera liczbę ostatnich 7 dni:

select count(*) from table 
where DATE_SUB(CURDATE(),INTERVAL 7 DAY)<=datefield" 
2
date('Y-m-d H:i:s', strtotime("2014-11-24 06:33:39" +35 days")) 

to dostanie wyliczoną datę w zdefiniowanym formacie.

0

Załóżmy dzisiejsza data jest

date_default_timezone_set('Asia/Calcutta'); 
$today=date("Y-m-d"); 

i mogę dodać 10 dni w bieżącej daty następująco:

$date_afte_10_days = date('Y-m-d', strtotime("$today +10 days")); 
0

Trzeba będzie przyjrzeć się strtotime(). Wyobrażam sobie twój ostateczny kod będzie wyglądał tak:

$dateVariable  = strtotime('2017-01-29');//your date variable goes here 
$date_plus_60_days = date('Y-m-d', strtotime('+ 60 days', $dateVariable)); 
echo $date_plus_60_days; 

Jeśli używasz PHP> = 5,2 Sugeruję użyć nowego obiektu DateTime. Na przykład jak poniżej:

$date_plus_60_days = new DateTime("2006-12-12"); 
$date_plus_60_days->modify("+60 days"); 
echo $date_plus_60_days->format("Y-m-d");