Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Sommare delle ore a ora attuale

    Ciao a tutti, ho un pò cercato sul forum ma non ho trovato risposta, quindi scrivo per primo questa mio problema.
    In pratica all'ora attuale che mi stampo tramite la funzione
    Codice PHP:
    date("H:i d-m-Y"
    devo poter sommare nel mio caso 6 ore, il mio problema nasce che se l'orario attuale è uguale o maggiore alle 18:00 mi deve cambiare anche la giornata o l'eventuale mese o anno se ad esempio ci troviamo proprio in un caso del genere 19:05 31/12/2010, dovrò ottenere come risultato 01:05 01/01/2011..

    Come posso fare?
    grazie in anticipo..

  2. #2
    mi autorispondo!!!! avendo trovato la soluzione

    Codice PHP:
     //memorizzo singolarmente giorno mese anno ora minuti e secondi
     
    $ora=date("H");
     
    $min=date("i");
     
    $giorno=date("d");
     
    $sec=date("s");
     
    $mese=date("m");
     
    $anno=date("Y");
     
    //sommo in questo caso 6 ore (ma posso anche aggiungere giorni..)
     
    $scadenza=date('d m Y H:i:s',strtotime("+0 days 6 hours",mktime($ora,$min,$sec,$mese,$giorno,$anno)));
    //stampo il risultato
     
    echo($scadenza); 

    Comunque, chi avesse altre soluzioni , lo invito a scriverle!
    è sempre bello confrontarsi!!
    Ciaoo!

  3. #3
    Io
    Estrai il timestamp e ci aggiungi 6 ore in secondi (1 minuto = 60 secondi; 10 minuti = 600 secondi; 60 minuti = 3600 secondi; 6 ore = (3600*6) cioé 21600).
    Questo per far capire in generale. In pratica:
    Codice PHP:
    date("H:i d-m-Y",time()+21600); 
    Per chi non lo sapesse il timestamp sono i secondi passati dal 1 gennaio 1970 e tramite la funzione date() è possibile estrarre qualsiasi cosa: giorno, mese, anno, nome del giorno della settimana, numero della settimana annuale... qualsiasi cosa.
    Basta aggiungere o togliere secondi per ottenere la data desiderata.
    Con il timestamp è anche molto più semplice fare qualsiasi tipo di analisi sulle date.
    Per calcolare la differenza tra due date basterà fare la sottrazione dei due timestamp e verrà fuori la differenza in secondi di tempo.
    Per creare un timestamp da una data si usa la funzione mktime(), tantè che nel tuo esempio utilizzi:
    Codice PHP:
     $scadenza=date('d m Y H:i:s',strtotime("+0 days 6 hours",mktime($ora,$min,$sec,$mese,$giorno,$anno))); 
    cioé crei un timestamp da una data.
    Se lavori già sul timestamp è molto più rapido e semplice. Prova e vedrai. Ne rimarrai sbalordito.
    Ce l'ho fatta! - ItalianPixel -

  4. #4
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Se si ha php 5.3.0 o superiore si potrebbe fare anche così

    Codice PHP:
    <?php
    $data
    =new DateTime("now");
    $data->add(DateInterval::createFromDateString("6 hours"));
    echo 
    $data->format("H:i d-m-Y");
    ?>
    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  5. #5
    Grazie portapipe..apprezzo tantissimo il tuo suggerimento, cosi come apprezzo il suggerimento di Grino, ma tra i due preferisco usare timestamp a questo punto, perchè non vorrei trovarmi nella spiacevole situazione che il server non usi php 5.3 o superiore..

    Non vorrei approfittare, ma io dovrei capire se tra la data che ho memorizzato su db
    (H:i d-m-Y) e la data corrente sono passati 21600 secondi! come faccio questa differenza?

  6. #6
    Come ti dicevo, con la funzione mktime(), puoi estrarre il timestamp di una determinata data.
    Tu l'hai usata qui:
    Codice PHP:
    $scadenza=date('d m Y H:i:s',strtotime("+0 days 6 hours",mktime($ora,$min,$sec,$mese,$giorno,$anno))); 
    Se hai un timestamp allora fai una semplice sottrazione. Se hai una data allora estrai il timestamp con mktime().
    Ti consiglio, se sei ancora in tempo, di salvare nel database il timestamp, non la data.
    Per visualizzare una data dal database basta usare:
    Codice PHP:
    echo date('d m Y H:i:s'$campodatabase['tempo']); 
    Così facendo puoi fare tutti i calcoli che ti pare ed estrarre, se dovrai o vorrai cambiare formattazione (utile soprattutto per siti multinazionali), le informazioni che ti pare.

    Se invece hai una data fissa allora devi estrarre il timestamp con: mktime($ora,$min,$sec,$mese,$giorno,$anno); grazie al quale otterrai un timestamp di quella data. Poi fai
    Codice PHP:
    $differenza time() - $timestampdatabase ;
    //otterrai i secondi di differenza tra la data salvata nel database e il tempo attuale (timestamp attuale ottenuto grazie a time() ) 
    Se pensi in secondi ogni problema riguardo le date si risolve subito.
    Calcolare il tempo passato dall'ultimo accesso di un utente? Verificare la data di scadenza di una promozione? O semplicemente quanti giorni mancano al tuo compleanno?
    Pensa in secondi. Matematica allo stato brado. Niente funzioni complesse, date da calcolare in base a precisi passaggi... semplice matematica.
    Sono passati 86400 secondi dall'ultimo accesso (60secondi
    *60minuti*24ore=1giorno). Se è maggiore allora cancella i cookie, se è minore allora scrivi "Bentornato". Rapido e indolore.
    Ce l'ho fatta! - ItalianPixel -

  7. #7
    Grazie ancora..avevo infatti risolto memorizzandomi anche nel db il formato timestamp..in fin dei conti mi sono reso conto che nn mi interessava sapere io personalmente giorno e mese, mi interessava sapere solo quanto tempo era passato!
    niente di più semplice con timestamp!
    mi è bastato fare una semplice differenza tra il valore in secondi che avevo nel db e la data attuale in secondi E IL GIOCO è FATTO!
    grazie!

  8. #8
    Ben lieto di essere stato utile.
    Buon lavoro
    Ce l'ho fatta! - ItalianPixel -

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.