Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 19
  1. #1

    Perchè convertendo un timestamp di pochi secondi ottengo valore sbagliato?

    Perchè se converto il valore timestamp di pochi secondo ottengo la conversione con un'ora di differenza?

    Con questo codice ad esempio

    Codice PHP:
    <?php
    echo " Inizio Esecuzione Programma \n";
    $inizio time();

    <
    varie_istruzioni>

    $fine time();
    echo 
    "\n Fine Esecuzione Programma \n";
    echo 
    "\n Tempo impiegato: ".date('H:i:s', ($fine-$inizio))." \n";
    ?>
    perchè alla fine l'output è sballato di un'ora tranne che con il valore "0"?

    Ad esempio anche inserendo al posto della differenza il valore "1" il risultato che si ottiene è sempre 01:00:01 (anzichè quello che mi aspetterei di 00:00:01).

    Lo si può risolvere facilmente mettendo -3600 dopo la differenza, d'accordo, ma perchè allora se inserisco il timestamp attuale l'ora è corretta e non c'è la differenza anche in questo caso di un'ora???

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    il riferimento è il tempo del server...

  3. #3
    Originariamente inviato da eiyen
    il riferimento è il tempo del server...
    Si, d'accordo, ma nel momento in cui faccio la differenza tra i due tempi, dato che gira tutto su uno stesso server, dovrei ottenere solo i secondi che sono passati dall'inizio alla fine dell'esecuzione del programma, senza curarmi se sia GMT, CET, UTC o che altro, giusto?

    Ora, sono questi secondi che vengono convertiti in maniera errata...

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    perché non leggi il manuale: prova questo
    Codice PHP:
    echo(date("Y - H:i:s"1)); 
    dovresti trovarti nell'anno 1970. E più precisamente alle 01:00:01 del mattino.
    Spiegazione: il secondo parametro è "time" ovvero quanto è trascorso da "Epoch" (1 gennaio 1970, ore 00:00:00 - GMT). Qui siamo in CET (GMT + 1 ora), aggiungici un altro secondo...
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Originariamente inviato da Andrea1979
    perché non leggi il manuale: prova questo
    Codice PHP:
    echo(date("Y - H:i:s"1)); 
    dovresti trovarti nell'anno 1970. E più precisamente alle 01:00:01 del mattino.
    Spiegazione: il secondo parametro è "time" ovvero quanto è trascorso da "Epoch" (1 gennaio 1970, ore 00:00:00 - GMT). Qui siamo in CET (GMT + 1 ora), aggiungici un altro secondo...
    Questo vuol dire che in automatico time() mi dà il timestamp GMT attuale e a seconda di dove si trova il server aggiunge o toglie 3600 * <X_ore_di_scarto>?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Basta un si o un no, un link che non mi dà la risposta non mi serve...

    La funzione time() in automatico mi dà il timestamp GMT attuale e a seconda di dove si trova il server aggiunge o toglie 3600 * <X_ore_di_scarto>?

  8. #8
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Codice PHP:

    $start 
    microtime(true) ;

    sleep(1) ;


    echo 
    microtime(true)-$start 

    E cmq usa un debuggher per queste cose, se hai la possibilità di usare xdebug etc.. i dati saranno piu' precisi. Nel caso installa un profile tipo xhprof ... i microtime non sono cosi' precisi poiche dipendeono troppo da molti fattori esterni allo script.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    misura il tempo in secondi dall'inizio dell'Unix epoch e ci può essere uno scarto sul fuso orario: ti consiglio di provare a visualizzare il tempo "0" per vedere da dove sta partendo il conteggio a seconda del timezone... vedi una spiegazione p.es. su timezone e date in php

  10. #10
    Ecco, microtime() è interessante, l'avevo già vista, ma a me serviva qualcosa per lunghi periodi di tempo

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.