Punto informatico Network
Login Esegui login | Non sei registrato? Iscriviti ora (è gratuito!)
Username: Password:
  • Annuncio Pubblicitario

[PHP] Sottrarre una data?

Il forum per tutti i developer. Leggere attentamente il regolamento di sezione prima di postare.

[PHP] Sottrarre una data?

Messaggioda Zane » gio lug 19, 2007 1:47 pm

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 [:)]
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda Leo » gio lug 19, 2007 2:50 pm

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.
Leo
Responsabile Tecnico MegaLab.it
Avatar utente
Leo
Silver Member
Silver Member
 
Messaggi: 1683
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda eDog » gio lug 19, 2007 3:01 pm

Confermo [^]

Devi lavorare con le date in formato Unix...
eDog,
"È meglio essere temuti o rispettati? Io dico: è troppo chiedere entrambe le cose?" - Tony Stark
Avatar utente
eDog
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3679
Iscritto il: sab dic 30, 2006 7:58 pm
Località: Vescovana (Padova)


Messaggioda M@ttia » gio lug 19, 2007 3:07 pm

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"...
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda Zane » gio lug 19, 2007 4:25 pm

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) [^]
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda Zane » gio lug 19, 2007 4:45 pm

Tanto per la cronaca: ho provato ad fare l'overloading dell'operatore - "alla Java", ma purtroppo PHP non è ancora così avanti [V]
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda M@ttia » gio lug 19, 2007 5:00 pm

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...
</IE><FIREFOX>
Avatar utente
M@ttia
Moderatore
Moderatore
 
Messaggi: 8363
Iscritto il: lun giu 09, 2003 2:18 pm
Località: Ticino - Estero

Messaggioda eDog » ven set 28, 2007 5:48 pm

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]
eDog,
"È meglio essere temuti o rispettati? Io dico: è troppo chiedere entrambe le cose?" - Tony Stark
Avatar utente
eDog
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3679
Iscritto il: sab dic 30, 2006 7:58 pm
Località: Vescovana (Padova)

Messaggioda Zane » ven set 28, 2007 7:46 pm

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);
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda eDog » sab set 29, 2007 2:35 pm

Grazie Zane, $this è la data da cui devi sottrarre, vero?
eDog,
"È meglio essere temuti o rispettati? Io dico: è troppo chiedere entrambe le cose?" - Tony Stark
Avatar utente
eDog
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3679
Iscritto il: sab dic 30, 2006 7:58 pm
Località: Vescovana (Padova)

Messaggioda Zane » dom set 30, 2007 7:02 am

Non proprio. Per un esempio più semplice, ti consiglio di guardare quanto proposto da Leo poco sopra
Avatar utente
Zane
MLI Hero
MLI Hero
 
Messaggi: 7935
Iscritto il: lun ago 05, 2002 9:36 am
Località: Ferrara

Messaggioda eDog » dom set 30, 2007 9:43 am

Capito! Ora mi metto al lavoro [std] [:D]
eDog,
"È meglio essere temuti o rispettati? Io dico: è troppo chiedere entrambe le cose?" - Tony Stark
Avatar utente
eDog
Membro Ufficiale (Gold)
Membro Ufficiale (Gold)
 
Messaggi: 3679
Iscritto il: sab dic 30, 2006 7:58 pm
Località: Vescovana (Padova)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti

Powered by phpBB © 2002, 2005, 2007, 2008 phpBB Group
Traduzione Italiana phpBB.it

megalab.it: testata telematica quotidiana registrata al Tribunale di Cosenza n. 22/09 del 13.08.2009, editore Master New Media S.r.l.; © Copyright 2008 Master New Media S.r.l. a socio unico - P.I. 02947530784. GRUPPO EDIZIONI MASTER Spa Tutti i diritti sono riservati. Per la pubblicità: Master Advertising