• User

    Help! mktime per date inferiori al 1970!

    Un script usa la funzione mktime. Tutto ok fino a quando la data è superiore al 1970....
    Nel manuale php, dal contributo di alcuni, ho copiato uno script che a detta di chi l'ha scritto la funzione mktime per date inferiori al 1970 restituisce una timestamp valida. A me purtroppo restituisce un generico -1.
    Ho provato con la funzione UNIX_TIMESTAMP di MySql ma anche con questo caso per date inferiori al 1970 il risultato è 0 !
    Anche la funzione strtotime() ...che su php.net viene indicata come quella che restituisce stringhe valide di timestamp sul mio server non ne vuole sapere...
    Ho provato a scrivere all'autore dello script (sul suo server linux gira a meraviglia) e mi dice che è questione di setteggio del server o di php.
    Ma dove? Non riesco a capire ....

    In pratica la funzione mktime restituisce una timestamp utilizzata per operare dei calcoli per un arco di tempo dal 1901 al 1938...
    ad esempio ( dal sito php.net )

    echo strtotime('13 Dec 1901 20:45:51'); // false
    echo "<br>";
    echo strtotime('13 Dec 1901 20:45:52'); // -2147483648
    echo "<br>";
    echo strtotime('19 Jan 2038 03:14:07'); // 2147483647
    echo "<br>";
    echo strtotime('19 Jan 2038 03:14:08'); // false
    echo "<br>";

    Sul mio non da assolutamente i valori indicati....

    Qualcuno sa dirmi se php va instalalto in modo particolare e/o come posso ovviare al problema?


  • User Attivo

    purtroppo oltre il 1970 diventa problematico e occorre fare tutto a mano...


  • User

    @piccolo socrate said:

    purtroppo oltre il 1970 diventa problematico e occorre fare tutto a mano...

    Oltre? Prima forse vorrai dire...in realtà dal 1901 al 1970 (prima della Unix epoch ) mktime con versioni antecedenti alla php5 restituisce solo un bel -1 e non la timestamp con il segno meno.
    Ho trovato una class scritta in proposito che fornisce la timestamp esatta anche con php4 .
    Solo che a me serve poco perchè nello script che devo utilizzarla va in conflitto, meglio c'è una variabile che introduce poi una lieve differenza che però per i calcoli complicati che deve fare è problematica.
    Con php5 il problema non sussiste perchè mktime per questa versione fa tutto dal1901 al 2038 . Solo che con php5 alcuni mie applicativi (uno pe rl averità) da problemi ...che imporrebbe riscrivere il codice.
    Per cui hdeciso salomonicamnete che l'apllicativo che usa la timestamp girerà su un host con php5 mentre gli altri gireranno sulserver con php4.4.9 ....c'est la vie! :bho: