Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50

    Sommare ad una data un fuso orario

    Ciao a tutti,
    scusate la banalita' della domanda.

    Ma se io ho una data in questo formato

    yyyy-01-26 hh24:mi:ss

    e il fuso orario come (elenco i vari casi)
    -11
    -4.3
    0
    5.45
    5.3
    11

    Come converto la data a quella locale, nel mio caso, all'Italia?
    E per farla generica, ovvero se il server e' ubicato in un altro fuso orario?

    So che la domanda e' banale, ma non vorrei sbagliarmi, sopratutto per quel che riguarda l'ora legale

    Grazie in anticipo

  2. #2
    Non ho ben capito la seconda parte della tua richiesta, in ogni caso per aggiungere/togliere un tempo ad una data è sufficiente convertire questo tempo in h,m,s e usare questa funzione
    Es:
    Codice PHP:
    <?php
    $date 
    = new DateTime('2000-01-01 0:0:1',new DateTimeZone('Europe/Berlin'));
    echo 
    $date->format('Y-m-d H:i:s') . "
    "
    ;
    $date->add(new DateInterval('PT10H3M2S')); /*Aggiungo 10 ore, 3 minuti, 2 secondi*/
    echo $date->format('Y-m-d H:i:s') . "
    "
    ;
    ?>
    P.S. Usa date->sub invece per togliere un certo tempo.

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50
    Originariamente inviato da bionicoz
    Non ho ben capito la seconda parte della tua richiesta, in ogni caso per aggiungere/togliere un tempo ad una data è sufficiente convertire questo tempo in h,m,s e usare questa funzione
    Es:
    Codice PHP:
    <?php
    $date 
    = new DateTime('2000-01-01 0:0:1',new DateTimeZone('Europe/Berlin'));
    echo 
    $date->format('Y-m-d H:i:s') . "
    "
    ;
    $date->add(new DateInterval('PT10H3M2S')); /*Aggiungo 10 ore, 3 minuti, 2 secondi*/
    echo $date->format('Y-m-d H:i:s') . "
    "
    ;
    ?>
    P.S. Usa date->sub invece per togliere un certo tempo.
    Grazie intanto per la risposta.
    Non ho capito solo come posso costruire la stringa PT10H3M2S in maniera automatica, partendo dai valori che ho indicato

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50
    Qualche suggerimento?

    Grazie

  5. #5
    Sorry, ma son stato via tutto il WE.
    Ammesso che tu gli passi quante ore vuoi aggiungere/togliere, basta creare una funzioncina che converte le tue (ad esempio) 4.5 ore e le converte in ore, minuti e secondi.
    Qualcosa del genere insomma:
    Codice PHP:
    <?php
    function create_str($hours){
        
    $hours=abs($hours);
        
    $h=floor($hours);
        
    $m=floor($hours*60-$h*60);
        
    $s=floor($hours*3600-$h*3600-$m*60);

        
    $str="PT".$h."H".$m."M".$s."S";

        return 
    $str;
    }

    $h=-4.51/*Ore da aggiungere/togliere*/


    $date = new DateTime('2000-01-01 0:0:1',new DateTimeZone('Europe/Berlin'));
    echo 
    $date->format('Y-m-d H:i:s') . "
    "
    ;

    if(
    $h>0)
        
    $date->add(new DateInterval(create_str($h)));
    else
        
    $date->sub(new DateInterval(create_str($h)));
    echo 
    $date->format('Y-m-d H:i:s') . "
    "
    ;

    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50
    Grazie del suggerimento.
    Ma mi hanno appena comunicato che non ho la versione 5.3 di PHP

    E ora come sommo a quella data, in quel formato, le ore, minuti e secondi?

    Grazie ancora

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    50
    up

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.