Pagina 1 di 1

[PHP] Sottrarre una data?

MessaggioInviato: gio lug 19, 2007 1:47 pm
da Zane
Ciao a tutti.

Avendo una stringa "19/07/2007", esiste un modo immediato per fare "19/07/2007"-30 ed ottenere la data di 30 giorni fa, con rispetto dei mesi a 28/29/30 giorni, ovviamente [:)]

MessaggioInviato: gio lug 19, 2007 2:50 pm
da Leo
Da quanto ne so non esiste una funzione che te lo consenta direttamente...
Credo che tu debba lavorare con il formato di data in unix, quindi ad esempio:

Codice: Seleziona tutto
        $start = mktime(0,0,0,7,19,2007); //Creo la data iniziale 19 luglio 2007 00:00:00
   $trentagiorni = 60 * 60 * 24 * 30; //Calcolo 30 giorni in secondi
   
   $enddate = $start - $trentagiorni; //Sottraggo i 2 valori
   echo date("d/m/Y",$enddate); //converto in formato leggibile il risultato della sottrazione.

MessaggioInviato: gio lug 19, 2007 3:01 pm
da eDog
Confermo [^]

Devi lavorare con le date in formato Unix...

MessaggioInviato: gio lug 19, 2007 3:07 pm
da M@ttia
Anche se non serve a nulla, lo ri-confermo anch'io (in unix ti converte la data in un numero rappresentante il n° di secondo trascorsi dalla "data zero", quindi li sottrae, quindi li ritrasforma in una data "leggibile"...

MessaggioInviato: gio lug 19, 2007 4:25 pm
da Zane
Grazie a tutti!

Seguendo le indicazioni riportate da Leo, ho realizzato un metodo per il mio opggetto data. Adesso almeno posso fare $oData->subtract(30) [^]

MessaggioInviato: gio lug 19, 2007 4:45 pm
da Zane
Tanto per la cronaca: ho provato ad fare l'overloading dell'operatore - "alla Java", ma purtroppo PHP non è ancora così avanti [V]

MessaggioInviato: gio lug 19, 2007 5:00 pm
da M@ttia
Ah in PHP non puoi overloadare gli operatori? Questa non la sapevo, l'ho sempre e solo fatto con C++, ma credevo si tramandasse anche al PHP con l'OOP... Grazie x l'info...

MessaggioInviato: ven set 28, 2007 5:48 pm
da eDog
Salve a tutti, riprendo in mano questo argomento perché mi sono "intricato" con le sottrazioni delle date [:D] [std]

Spiego il mio problema: dovrei ottenere gli anni da una sottrazione della data giornaliera con una data salvata in un database in formato j- n-Y

In poche parole:

Ho una data richiamata da un database e salvata nella variabile $ds

Ho la data corrente $dc = time();

Devo ottenere la data in anni in una variabile $da

Esempio

$ds = 2- 1-1992
$dc = 1190998037
$da = 15

Non riesco ad uscirne [acc2] mi date una mano? [std]

MessaggioInviato: ven set 28, 2007 7:46 pm
da Zane
Ti copio lo snippet di codice che ho realizzato per risolvere il mio problema

Codice: Seleziona tutto
$this_in_secondi=mktime(0, 0, 0, substr($this->data, 4, 2), substr($this->data, 6, 2), substr($this->data, 0, 4));
      
$gg_in_secondi=60 * 60 * 24 * $gg;
      
$risultato_in_secondi=$this_in_secondi - $gg_in_secondi;
      
$risultato_as_greg=date("d/m/Y",$risultato_in_secondi);

MessaggioInviato: sab set 29, 2007 2:35 pm
da eDog
Grazie Zane, $this è la data da cui devi sottrarre, vero?

MessaggioInviato: dom set 30, 2007 7:02 am
da Zane
Non proprio. Per un esempio più semplice, ti consiglio di guardare quanto proposto da Leo poco sopra

MessaggioInviato: dom set 30, 2007 9:43 am
da eDog
Capito! Ora mi metto al lavoro [std] [:D]