2009-05-06 13 views
23

Nel mio codice PHP ho una data nella mia variabile "$ postedDate".
Ora voglio ottenere la data dopo 7 giorni, 15 giorni, un mese e 2 mesi sono trascorsi.Come posso ottenere una data dopo 15 giorni/1 mese in PHP?

Quale funzione di data dovrei usare?

Il formato della data di uscita deve essere nel formato USA.

+2

Il termine che si desidera Google per è "data l'aritmetica". –

risposta

17

provare questo

$date = date("Y-m-d");// current date 

$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 day"); 
$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 week"); 
$date = strtotime(date("Y-m-d", strtotime($date)) . " +2 week"); 
$date = strtotime(date("Y-m-d", strtotime($date)) . " +1 month"); 
$date = strtotime(date("Y-m-d", strtotime($date)) . " +30 days"); 
2

Qual è il formato di input in ogni caso?

1) Se la data è, ad esempio, matrice di anno, mese e giorno, quindi è possibile mktime (0, 0, 0, $ mese, $ giorno + 15, $ anno) o mktime (0, 0, 0, $ mese + 1, $ giorno, $ anno). Si noti che mktime è una funzione intelligente, che gestirà correttamente i valori fuori limite, quindi mktime (0, 0, 0, 13, 33, 2008) (che è il mese 13, giorno 33 del 2008) restituirà la data/ora di febbraio , 2, 2009.

2) Se la data è un timestamp, aggiungere solo 15 * SECONDS_IN_A_DAY e quindi emetterlo con data (/ * qualsiasi formato * /, $ postedDate). Se è necessario aggiungere un mese, 30 giorni non funzioneranno sempre correttamente, quindi è possibile convertire prima l'ora e il mese, il giorno e l'anno (con la funzione date()) e quindi usare (1).

3) Se la tua data è una stringa, la prima volta la analizzi, ad esempio con strtotime(), quindi fai ciò che desideri.

13

Dal PHP 5.2.0 build DateTime in classe è disponibile

$date = new DateTime($postedDate); 

$date->modify('+1 day'); 

echo $date->format('Y-m-d'); 

http://php.net/manual/en/class.datetime.php

+0

Grazie mille. Risolve il mio problema in pochi secondi. grazie ancora –

+0

Preferisco sempre questa soluzione con l'opzione 'strtotime'. – Peon

3

Questo è molto semplice; provare questo:

$date = "2013-06-12"; // date you want to upgade 

echo $date = date("Y-m-d", strtotime($date ." +1 day")); 
9
$date=strtotime(date('Y-m-d')); // if today :2013-05-23 

$newDate = date('Y-m-d',strtotime('+15 days',$date)); 

echo $newDate; //after15 days :2013-06-07 

$newDate = date('Y-m-d',strtotime('+1 month',$date)); 

echo $newDate; // after 1 month :2013-06-23 
Problemi correlati