• User Newbie

    Sommare secondi ad un datetime

    Ho il mio datetime cosi: "2006/06/06 17:53:01"
    e vorrei sommare i secondi ....

    se faccio "2006/06/06 17:53:01" + 2 per esemio, mi ritorna "2006/06/06 17:53:12" !!!!

    come posso fare?


  • Super User

    @jeangr said:

    Ho il mio datetime cosi: "2006/06/06 17:53:01"
    e vorrei sommare i secondi ....

    se faccio "2006/06/06 17:53:01" + 2 per esemio, mi ritorna "2006/06/06 17:53:12" !!!!

    come posso fare?
    Come tratti la data? se usi il timestamp, ti basta il + 2.

    Se la tratti come testo è impossibile pensare che "2006/06/06 17:53:01" + 2 funzioni...

    Comunque sia, nel database è sempre meglio tenere la data con il timestamp, molto versatile. Quindi... Se proprio devi fare in quel modo...

    
    preg_match("#^(.+):(.+)$#", $data, $result); // cerco i secondi
    preg_replace("#^(.+):(.+)$#", "#$1:".$result[2][0]."#", $data);
    
    

    Scritto on-the-fly quindi probabilmente non funge... Vedi un pò tu


  • Super User

    e per sommare giorni ad un date? Avete qualche script sottomano? 😄


  • Super User

    Ciao Tuono,
    il timestamp è un numero fatto di secondi quindi se vuoi aggiungere un minuto aggiungi nMinuti * 60;
    per le ore nOre * 60 * 60
    per i giorni nGiorni * 60 * 60 * 24
    e via dicendo 😄

    maggiori info:
    [url=http://it.php.net/manual/it/function.time.php]PHP: time - Manual

    buon divertimento


  • Super User

    non parlavo di timestamp 😉 ma di campo date fatto tipo 2006-07-19
    Un algoritmo che somma 87 giorni e mi restituisce la data ce l'avete sottomano? Altrimenti mi metto a scriverlo 😄


  • User Newbie

    io alla fine ho fatto così

    select nome_campo_datetime + interval 2 second from tabella

    dove 2 sono i secondi che volevo sommare alla mia datatime....
    inolte fa i calcoli giusti,nel senso che se sommo 99999999 secondi mi va avanti con gli anni e tutto il resto!


  • User

    Ecco come aggiungere giorni XXX ad una data testuale
    e ritornare ancora una data testuale...

    [php]
    $data="01/01/1979"; // Metto formato europeo, ma il procedimento è lo stesso...
    list($giorno,$mese,$anno)=explode("/",$data); // ... ovviamente qui cambi...

    $time_nuovo=mktime(0,0,0,$mese,$giorno+XXX,$anno);
    $data_nuova=date("d/m/Y",$time nuovo); //.. e anche qui 😄
    [/php]

    Al volo ma dovrebbe fungere 😄


  • Super User

    @tuono:

    quindi non devi fare il lavoro con php ma in una select? non riesco a capire quello che ti serve.

    in ogni caso se il db è mysql (con gli altri è da provare) esiste questa funzione:

    DATE_ADD(date,INTERVAL expr unit), DATE_SUB(date,INTERVAL expr unit)

    per maggiori info:
    [url=http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html]MySQL 5.0 Reference Manual :: 12.5 Date and Time Functions


  • Super User

    Ciao Tymba,
    faccio prima a spiegarti quello che devo fare così magari mi dai anche qualche consiglio.

    In sostanza devo gestire degli appuntamenti periodici.
    L'utente mi dice il giorno 20/07/2006 e ogni 15 giorni.
    Poi esiste una ricerca per data, e se uno mi ricerca gli appuntamenti del giorno 19/08/2006 mi deve uscire quell'appuntamento.

    Come gestiresti la cosa? Io in fase di input per ora salvo la data e ogni quanti giorni si ripete.

    Ciao! 😄