Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22

Discussione: come lavora date() php

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    158

    come lavora date() php

    Buongiorno a tutti, ho una domanda molto importante da fare: ho un database di 28mega (un gestionale) che è stato trasferito assieme al dominio su un nuovo server. Ecco, mi trovo in visualizzazione tutti gli orari che stampo con la funzione date() indietro di 6 ore. La funzione date() si basa in qualche modo sull'orario di sistema (quindi si può ipotizzare un'impostazione errata dell'ora sul server) oppure fa strettamente un calcolo dei secondi che sono passati dal 1/1/1970 ? Altrimenti dovrei considerare un'intrusione

  2. #2
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    dal manuale
    string date ( string $format [, int $timestamp ] )
    Returns a string formatted according to the given format string using the given integer timestamp or the current time if no timestamp is given. In other words, timestamp is optional and defaults to the value of time().


    quindi se non gli passi il timestamp prende l'ora del server, anche se mi sembra strano che non gli passi il timestamp dato che prendi le date da un db

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    158
    Se stampo un date("d/m/Y H:i",0) non mi vedo 01/01/1970 01:00 ma 31/12/1969 19:00 esattamente 6 ore in meno. Il problema è che lo fa anche con le altre date già salvate nel db

  4. #4
    Utente di HTML.it L'avatar di bstefano79
    Registrato dal
    Feb 2004
    Messaggi
    2,520
    ho trovato questo in rete
    Watch out when using strtotime() on a string that might begin with "0000-00-00" as MySQL stores "null" dates on a not-null date column. The value returned by strtotime("0000-00-00") varies by php version. Consider the following:
    Codice PHP:

    <?php 
    date
    ('Y-m-d',strtotime('0000-00-00 00:00:00')); 
    // returns "1969-12-31" on the following versions: 
    //   Win XP php 5.2.9-2 
    //   Win 7 php 5.3.0 
    //   RHEL 5 php 5.2.8 
    // but returns "-0001-11-30" on RHEL 5 php 5.2.10!
    ?>

  5. #5
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Il problema è l'ora del server.
    Se sei in php5, prova a mettere questa riga in un file .htaccess

    php_value date.timezone Europe/Rome

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    158
    Se io faccio echo date("d/m/Y H:i", time()) mi restituisce 6 ore in più.
    Se faccio date("d/m/Y H:i", 0); mi da 01/01/1970 01:00 che è corretto.
    Se però faccio forzare il GMT la prima è corretta e la seconda mi da 31/12/1969 19:00 ovvero 6 ore i meno al normale.
    Ma quante impostazioni di ora ci sono sui server linux?

  7. #7
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    che significa "faccio forzare il GMT"?

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    158
    Mi sono espresso male. Il sistemista che ha il server modifica l'orario che da noi è GMT+1 e lo fa variare di 6 ore.

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da patt
    gli orari che stampo con la funzione date() indietro di 6 ore.
    ma 31/12/1969 19:00 esattamente 6 ore in meno
    Se io faccio echo date("d/m/Y H:i", time()) mi restituisce 6 ore in più.

    Se stampo un date("d/m/Y H:i",0) non mi vedo 01/01/1970 01:00 ma 31/12/1969 19:00
    Se faccio date("d/m/Y H:i", 0); mi da 01/01/1970 01:00 che è corretto.

    Mettiti davanti ad uno specchio e prova a metterti d'accordo con il tipo che ci trovi dentro.

    1) Quale timezone ha impostato il server?
    2) Hai provato a fare quello che ti ho suggerito prima?
    3) In che formato hai salvato le date sul db?

    Un altro post sconclusionato e ti lascio alle intuizioni di stefano79

  10. #10
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    158
    Parti dal presupposto che sto impazzendo da 2 giorni per questo problema.
    Il timezone impostato è quello corretto Europa/Roma.
    Ho provato ad impostarlo nel .htaccess ma non cambia nulla e l'ho fatto anche via php con questa mini guida http://www.sastgroup.com/tutorials/r...server-con-php
    Le date sono salvate in formato INT.
    Se vuoi aggiungo che questi problemi sono nati 2 giorni fa quando il sito è stato spostato da un server windows ad un server linux. Prima non avevo mai avuto questi problemi

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 © 2024 vBulletin Solutions, Inc. All rights reserved.