Ho usato il metodo strtotime() di PHP per accettare un campo data su un modulo. Mi piace quanto sia potente, in che modo accetterà "Domani", "Giovedi prossimo" o (presumibilmente) qualsiasi rappresentazione di data e convertirla nel timestamp di Unix.PHP strtotime() sembra che si aspetti un formato Euro
Sta funzionando benissimo, fino a ieri. Qualcuno ha inserito "2-4-10" e invece di registrare il 4 febbraio 2010, ha registrato il 10 aprile 2002! Quindi si aspettava Y-M-D invece di M-D-Y.
Ho pensato che forse il problema riguardava solo un anno a 2 cifre, quindi abbiamo provato di nuovo con "2-4-2010". Quello registrato il 2 aprile 2010! A quel punto non capisco cosa stia facendo lo strtotime(). PHP.net dice che si aspetta un formato di data inglese americano. Perché allora assumerebbe D-M-Y?
C'è un modo per aggirare questo? O devo smettere di usare strtotime()?
Nota: Ho appena fatto un test. Quando usi le barre invece di trattini/trattini, funziona bene, anche con 2/4/10. Perché diavolo importa? E se è tutto, dovrei semplicemente eseguire str_replace ("-", "/", $ input) sull'input del form prima di passarlo a strtotime()?
Sì, tentare di normalizzare la data in qualche modo prima di elaborarlo con strtotime mi sembra una buona idea. – JAL
Attendi fino a quando non tenti di usare strtotime per analizzare * volte *, quindi ti divertirai un mondo. (Pensa a fusi orari, ora legale, ecc.) –