Originalmente inviato da
blackbos
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..
Originalmente inviato da
binarysun
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