Visualizzazione risultati 1 fino 4 di 4

Discussione: Timestamp a 64 bit

  1. #1
    Guest

    Predefinito Timestamp a 64 bit

    Leggendo qui mi pare di capire che php supporta i timestamp a 64 bit (quindi ben 292 miliardi di anni in avanti e indietro), ma facendo alcune prove con mktime ho notato che ancora non mi accetta date fuori dall'intervallo 1901 - 2038..

    Questo perchè le macchine di altervista lavorano ancora a 32 bit o sono io che sbaglio qualcosa (molto probabile )?

    PS: ho abilitato php 5.3

    grazie per le risposte

  2. #2
    Guest

    Predefinito

    Se quello è il range allora si, sono a 32bit visto che quello è l'Y2K38.


    Edit: però, ripensandoci.. potrebbero anche essere macchine a 64bit ma non lo è la versione di php su di esse installata.

    In ogni caso se ti può far comodo ho trovato questa libreria.
    Una volta inclusa nel tuo script puoi usare tutte le funzioni di data aggiungendovi il prefisso "adodb_".

    Qui un esempio su un sistema a 32bit con php 5.2.x sotto Apache:
    Codice PHP:
    <?php
    require 'adodb-time.inc.php';

    echo
    adodb_date('Y-m-d', time()+(86400*30*12*50)); // restituisce 2061-03-07
    ?>
    Ultima modifica di blackbos : 25-11-2011 alle ore 13.51.32 Motivo: informazioni aggiuntive

  3. #3
    L'avatar di binarysun
    binarysun non è connesso Utente storico
    Data registrazione
    02-07-2004
    Messaggi
    2,017

    Predefinito

    No, leggi bene.
    Li c'è scritto che le date internamente vengono gestite come dato a 64 bit.

    mktime è una funzione che restituisce i secondi dallo unix epoch
    Per sicurezza (forse per evitare errori di formato) hanno limitato il range di date
    Nella definizione di mktime c'è una caution che dice:
    "Therefore the range of valid years was limited to 1970 through 2038."
    "L'intelligenza è una pianta che va curata continuamente.
    Dovreste vedere com'è bello, il mio bonsai."
    Rat-man®

    [Gradient Text]
    [Su che server sei?]
    ->flickr

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da blackbos Visualizza messaggio
    Se quello è il range allora si, sono a 32bit visto che quello è l'Y2K38.


    Edit: però, ripensandoci.. potrebbero anche essere macchine a 64bit ma non lo è la versione di php su di esse installata.

    In ogni caso se ti può far comodo ho trovato questa libreria.
    Una volta inclusa nel tuo script puoi usare tutte le funzioni di data aggiungendovi il prefisso "adodb_".

    Qui un esempio su un sistema a 32bit con php 5.2.x sotto Apache:
    Codice PHP:
    <?php
    require 'adodb-time.inc.php';

    echo
    adodb_date('Y-m-d', time()+(86400*30*12*50)); // restituisce 2061-03-07
    ?>
    Avevo già addocchiato quella libreria, ma pensavo fosse stata fatta per le versioni di PHP di quegli anni, l'ultima revisione è del 2008, e mi sembra strano che ad oggi nelle ultime versioni del php non sia ancora stato pensato un metodo per gestire i timestamp al di fuori del sopracitato intervallo..

    Citazione Originalmente inviato da binarysun Visualizza messaggio
    No, leggi bene.
    Li c'è scritto che le date internamente vengono gestite come dato a 64 bit.

    mktime è una funzione che restituisce i secondi dallo unix epoch
    Per sicurezza (forse per evitare errori di formato) hanno limitato il range di date
    Nella definizione di mktime c'è una caution che dice:
    "Therefore the range of valid years was limited to 1970 through 2038."
    Forse perchè mktime è una "vecchia" funzione? ora faccio delle prove con la classe datetime introdotta con php 5.3

    EDIT:
    così pare funzionare (ma qui non si parla più di timestamp, ma di una classe appositamente creata per gestire le date):
    Codice PHP:
    $time = new DateTime("2140-10-10", new DateTimeZone("Europe/Rome"));
    echo
    "<p>time= " . $time->format("d/m/Y") . "</p>";
    $time->getTimestamp(); //per date fuori dall'intervallo UNIX timestamp restituisce ancora valore nullo
    mi sa che passerò a questa classe per la gestione delle date, unico inconveniente è che non supporta la localizzazione della lingua di rappresentazione della data, come invece faceva strftime
    Ultima modifica di rainz : 25-11-2011 alle ore 15.36.21

Tags for this Thread

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •