Cerca nel blog

Pubblicità

banner-125x125-masu banner-125x125 banner-125x125 banner-125x125

Feed RSS e Newsletter

Puoi seguire il mio blog abbonandoti al feed RSS, se non sai cos'è un feed RSS prova a guardare questo video... Spiega tutto!

Icona Feed RSS

Twitter

MyBlogLog

PayPal

Se ti piace questo blog puoi pensare ad una donazione.

Tutti i fondi ricevuti saranno utilizzati per il mio sollazzo personale. :-)

Ultimi commenti...

ferocesalatino: ok, mi servono 1498 hd usati? chi mi presta il(i) suo(i)?? prometto che glielo riporto!! parola di...

ilBeca: eheh! :grin:

Napolux: Lorenzo Strambi ha scritto: Non sono un programmatore PHP però mi piacerebbe iniziare, come al solito quando...

Lorenzo Strambi: Non sono un programmatore PHP però mi piacerebbe iniziare, come al solito quando decido di fare...

WebSurfer_: O_O davvero utile PhpSnips :)

Snippet: giocare con le date in PHP

mercoledì 5 novembre 2008
1 Star2 Stars3 Stars4 Stars5 Stars Vota!
Loading ... Loading ...

Undolog a me stimola la fantasia. Le sue snippet poi, sono utilissime, ma ti fanno anche venir voglia di mettere in moto il cervello: un po' come la settimana enigmistica.

Ieri, spulciando il suo blog, mi sono imbattuto in questo post. La sua snippet (che permette di convertire date dal formato yyyy-mm-dd hh:mm:ss a yyyymmddhhmmss) è molto carina, ma sinceramente io "sono di un'altra parrocchia".

Uso direttamente le funzioni che PHP mette a disposizione.


$data = "2008-11-05 12:05:08";
echo date("YmdHis",strtotime($data));

Restituisce infatti 20081105120508...

Perché trasformare una data in questo formato? Semplice. Trasformando la data in un numero intero usando la sintassi YmdHis possiamo confrontarle tra loro, ordinarle, ecc... Trattandole semplicemente come numeri interi.

Prediamo ad esempio le date 31/12/2008 ore 12.45 e 31/12/2008 ore 13.00: ad occhio è facile capire quale sia più in là nel tempo delle due (la seconda).

Trasformandole nei loro corrispettivi numerici secondo il formato citato in precedenza otteniamo due numeri interi:

  • La prima diventa 200812311245
  • La seconda diventa 200812311300

Facile poi effettuare un semplice confronto: il secondo numero è maggiore del primo. Basta un normale confronto "maggiore / minore" (con un if ad esempio)...

La funzione strtotime() non accetta in input un qualsiasi tipo di data.
Per sapere quali sono i formati accettati dalla funzione consiglio di leggere il manuale GNU, capitolo "Date input formats". Lo trovate qui

Il mio codice sarà anche più "facile" da leggere, ma quello di Undolog è tremendamente più veloce (non che avessi dei dubbi, eh): per rendere l'idea ho fatto un rapido (e sicuramente empirico) benchmark eseguendo i 2 script 10.000 volte sulla stessa data.

Il mio codice viene eseguito in circa 2.5 secondi, quello di Giovambattista si attesta intorno agli 0.15! Se siete maniaci delle performance... Beh, buttatevi sulla snippet di Undolog!

Già che ci siamo... Volete sapere come cronometrare il vostro codice PHP? Leggete qua!

P.s.
Leggi questo post via web... Ti stai perdendo le info e gli alert colorati! :P

Questo articolo è stato pubblicato mercoledì, 5 novembre 2008 alle ore 09:30 Se non vuoi perdere nemmeno un articolo del mio blog abbonati al feed RSS. Se non sai cos'è un feed RSS puoi guardare questo video, spiega tutto!

In alternativa puoi abbonarti alla newsletter, riceverai un'email ogni volta che verrà pubblicato un nuovo post. Il tuo indirizzo email sarà gestito da Feedburner.

  

6 Commenti a “Snippet: giocare con le date in PHP”

  1. Giovambattista Fazioli scrive:

    Fantastico!! Ottimo nuovo template e ottimo post… anch’io userei la sintassi che hai proposto tu, chissà qual’è la più veloce; se la regular expression o la date(... strtotime() ) ?! :D

  2. Napolux scrive:

    @Giovambattista Fazioli
    Ehm… L’ho fatto il benchmark… Lo trovi alla fine del post. :P

  3. Mayaliny scrive:

    strototime tutta la vita.. ti rende indipendente dal formato iniziale.. ;)

  4. anecòico scrive:

    uhm… da capra totale di PHP non posso che dirti: mi fido :D

    bello il nuovo template, bravo! (sto reprimendo l’istinto di dirti che da bravo miope preferisco i caratteri senza grazie, meno confusi e più leggibili per le talpe come me…. ops non mi sono represso abbastanza :razz: )

  5. Emanuele scrive:

    Interessante il benchmark, ad occhio avrei creduto che la funzione nativa sarebbe stata più performante! ;-)
    Ciao,
    Emanuele

  6. Giovambattista Fazioli scrive:

    Vedi anche questo commento