Lavorare con gli orari e le date con la funzione date (php)

Livello base

« Older   Newer »
 
  Share  
.
  1. alfioo
        +1   -1
     
    .

    User deleted


    Questo semplicissimo tutorial vi guiderà nella comprensione della formattazione delle date e degli orari in PHP.
    L'uso corretto delle date e degli orari è cosa fondamentale per un programmatore, ma spesso i neofiti non sanno come districarsi tra le molte funzioni presentate, magari velocemente e superficialmente, dai manuali.

    Iniziamo col dire che PHP, come moltissimi altri linguaggi di programmazione, non solo per il web, basano le date sul formato Timestamp. Il formato timestamp indica semplicemente il numero di secondi trascorsi dal 01/01/1970, data che ha preso il nome di Unix Epoch, Epoca Unix. Su questo formato si basano tutte le funzioni che PHP mette a disposizione per lavorare con date e orari. Supponiamo che adesso siano le ore 00:00 del 01/01/2006, allora indicativamente il timestamp in questo istante sarà approssimativamente 60x60x24x30x12x36. In realtà il calcolo non è esatto in quanto non tiene conto dei mesi di 31 e 28 giorni, degli anni bisetili ecc...
    Il timestamp esatto in un dato istante, con precisione al secondo, si può ottenere con PHP usando la funzione time(), che restituisce appunto il timestamp nell'istante in cui essa è chiamata.

    Ma come possiamo fare per visualizzare ad esempio una data in modo immediato del tipo "hh:mm:ss giorno gg/mm/aaaa" senza dover fare troppi calcoli e senza dover scrivere troppe righe di codice?
    Proprio a tal scopo PHP mette a disposizione la funzione date(), che permette, dato un timestamp, non necessariamente quello corrente, di formattare una data/ora in qualsiasi modo. Essa ritorna una stringa con la data/ora formattata. Ad esempio:

    CODICE
    <?php
    echo date("F j, Y, g:i a", time());
    ?>



    Notiamo che date() accetta due argomenti: il primo è la stringa pattern di formattazione, il secondo è il timestamp da utilizzare. La stringa pattern è una comune stringa in cui possono comparire dei caratteri chiave che identificano una data parte della data/ora. La tabella seguente mostra tutte i caratteri speciali con i relativi significati:

    Formato Descrizione Esempio
    A Prefisso "AM" o "PM" AM
    a Prefisso "am" o "pm" (lettere minuscole) am
    B Swatch Internet Time (conversione)
    d Giorno del mese a due cifre (01-31) 08
    D Giorno della settimana abbreviato (in inglese) Wed
    F Nome del mese completo (in inglese) January
    g Ora senza eventuali zero (0-12) 6
    G Ora nel formato 24 ore senza eventuali zero 3
    h Ora nel formato 12 ore (00-12) 09
    H Ora nel formato 24 ore (00-24) 13
    i Minuti (00-59) 43
    I Booleano ora legale (1 se c'è l'ora legale, 0 altrimenti) 1
    j Giorni del mese senza eventuali zero (1-31) 15
    l ("L" minuscola) Giorno della settimana completo (in inglese) Wednesday
    L Booleano anno bisestile (1 se è bisestile, 0 altrimenti) 0
    m Numero del mese (01-12) 02
    M Nome del mese abbreviato (in inglese) Jan
    n Numero del mese senza eventuali zero 4
    O Differenza in ore dal fuso orario di Greenwich "+0200"
    r Data formattata secondo la RFC 822 (da PHP 4.0.4) "Thu, 21 Dec 2000 16:01:07 +0200"
    s Secondi (00-59) 29
    S Suffisso del giorno con tn o nd nd
    t Numero di giorni in un dato mese (28-31) 30
    T Fuso orario del computer MDT
    U secondi dalla Unix Epoch (secondi dal 01/01/1970)
    w Numero del giorno della settimana (0 = Domenica, 6 = Sabato) 3
    W ISO-8601 numero della settimana dell'anno con settimane che iniziano il lunedì (da PHP 4.1.0) 16
    Y Anno nel formato a quattro cifre 2006
    y Anno nel formato a due cifre 06
    z Giorno dell'anno (0-365) 178
    Z Fuso orario in secondi (ad ovest dell'UTC è negativo, ad EST positivo) -43200




    L'esempio precedente visualizzava quindi qualcosa simile a "March 10, 2001, 5:16 pm". E' possibile creare qualsiasi sequenza di caratteri speciali per formattare la data e l'ora. E' possibile inoltre inserire normale testo, purchè tutte le lettere sia precedute dal carattere di escape backslash "\". I segni di interpunzione invece non necessitano l'escape. Ad esempio:

    CODICE
    <?php
    echo date("'\i\t \i\s \t\h\e jS \d\a\y."); // visualizza "it is the 10th day."
    ?>



    Come possiamo notare ogni lettera deve essere preceduta dal carattere di escape, poichè le lettere hanno i significati speciali riportati nella tabella sopra. Inoltre si può notare che il secondo argomento della funzione date(), ovvero il timestamp, è facoltativo; omettendolo verrà considerato il timestamp attuale.

    Riporto qui altri esempi di utilizzo della funzione date():

    CODICE
    <?php
    $today = date("m.d.y"); // 03.10.01
    $today = date("j, n, Y"); // 10, 3, 2001
    $today = date("Ymd"); // 20010310
    $today = date('h-i-s, j-m-y, it is w Day z '); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01
    $today = date("D M j G:i:s T Y"); // Sat Mar 10 15:16:08 MST 2001
    $today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:17 m is month
    $today = date("H:i:s"); // 17:16:17
    $today = date("H:i:s d/m/Y"); // 17:03:17 03/10/2001
    ?>



    E' possibile modificare la lingua in cui vengono stampate le indicazioni testuali, come ad esempio i nomi estesi dei giorni o dei mesi, per far si che siano in una lingua diversa dall'inglese. Per fare ciò bisogna utilizzare le funzioni setlocale() e strftime(), che però non trattiamo.
     
    Top
    .
0 replies since 1/8/2014, 13:18   988 views
  Share  
.
Top
Top