ADNKRONOS

Tecnologia

Amazon Books

WallPapers

Driver Image Banner 728 x 90

Date & Time

In questo capitolo esamineremo un po' più da vicino cosa ci offre il PHP per la gestione delle date e del tempo.

Queste funzioni ci permettono di scaricare la data e l'orario dal server dove gira il PHP.

E' possibile usare queste funzioni per formattare l'output delle date e degli orari in diversi modi.

Ecco l'elenco delle funzioni che il PHP mette a disposizione:

checkdate -- Verifica una data/orario gregoriana/o

date -- Formatta una data o orario locale

getdate -- Riceve informazioni su data/orario

gettimeofday -- Riceve l'orario attuale

gmdate -- Formatta una data/ora GMT/UTC

gmmktime -- Riceve l' UNIX timestamp per una data GMT

gmstrftime -- Formatta una data/ora GMT/UTC secondo i parametri locali

localtime -- Riceve l'orario locale

microtime -- Restituisce l'attuale UNIX timestamp con i microsecondi

mktime -- Restituisce la UNIX timestamp per una data

strftime -- Formatta una data/orario locale accordandola/o alle impostazioni locali

sstrtotime -- Analizza le descrizioni testuali di datetime in Inglese nell' UNIX timestamp

time -- Restituisce l'attuale UNIX timestamp

Rimandiamo alla lettura del manuale per una dettagliata descrizione delle funzioni, noi ora daremo qualche cenno sull'utilizzo di quelle di uso più comune.

 

 

Time()

Descrizione : int time(void)

restituisce il timestamp Unix corrente

Esempio :

<?php

echo "<b>esempi di uso funzioni per date e tempo <b><br>";

$a = time();

echo "Funzione time()<br>";

echo $a;

?>

il risultato è:

esempi di uso funzioni per date e tempo

Funzione time()

1061205958

 

 

getdate()

Restituisce un array associativo, contenente le informazioni sulla data del timestamp o dell'attuale orario locale se non è stato assegnato timestamp.

Gli elementi dell' array sono:

  •  
    • "seconds" – secondi
    • "minutes" – minuti
    • "hours" – ore
    • "mday" - giorno del mese
    • "wday" - giorno della settimana, numerico : da 0 come Domenica a 6 come Sabato
    • "mon" - mese, numerico
    • "year" - anno, numerico
    • "yday" - giorno dell'anno, numerico; i.e. "299"
    • "weekday" - giorno della settimana, testuale, per intero; i.e. "Friday"
    • "month" - mese, testuale, per intero; i.e. "January"

Descrizione : array getdate(int timestamp)

Esempio:

<?php

echo "<b>esempi di uso funzioni per date e tempo <b><br>";

$a = getdate();

echo "Funzione getdate()<br>";

$month = $a['month'];

$mday = $a['mday'];

$year = $a['year'];

echo "$month $mday, $year"

?>

Si ottiene :

esempi di uso funzioni per date e tempo

Funzione getdate()

August 18, 2003

 

checkdate

checkdate -- Verifica una data/orario gregoriana/o

Descrizione

bool checkdate ( int mese, int giorno, int anno)

 

Restituisce TRUE se la data inserita è valida; altrimenti restituisce FALSE.

Controlla la validità di una data formata dagli argomenti.

Una data è considerata valida se:

  • anno è compreso tra 1 e 32767
  • mese è compreso tra 1 e 12
  • Giorno è compreso tra il numero dei giorni possibile per il mese dato.

Gli anno(i) bisestili sono presi in considerazione.

Esempio:

<?php

echo "<b>esempi di uso funzioni per date e tempo <b><br>";

$a = checkdate(13,4,2001);

print "Funzione checkdate(13,4,2001)<br>";

print "data corretta $a";

$a = checkdate(11,4,2001);

echo "<br>Funzione checkdate(11,4,2001)<br>";

echo "data corretta $a";

?>

da il seguente risultato:

esempi di uso funzioni per date e tempo

Funzione checkdate(13,4,2001)

data corretta (quindi FALSE)

Funzione checkdate(11,4,2001)

data corretta 1 (quindi TRUE)

 

date

date -- Formatta una data o orario locale

Descrizione : string date ( string formato [, int timestamp])

Restituisce una stringa formattata in accordo con il formato della stringa usato nell' intero timestamp o nell'attuale orario locale se timestamp non è assegnato.

Nota: L'intervallo valido del timestamp è abitualmente da Fri, 13

Dec 1901 20:45:54 GMT a Tue, 19 Jan 2038 03:14:07 GMT. (Queste date

corrispondono al valore minimo e al massimo per un intero segnato a 32-bit.)

In aggiunta, dei databases hanno funzioni che convertono i

loro formati di data in timestamps (come la funzione di MySQL, UNIX_TIMESTAMP).

I seguenti caratteri sono utilizzati nella stringa formato:

  • a - "am" o "pm"
  • A - "AM" o "PM"
  • B - Swatch Internet time
  • d - giorno del mese, 2 cifre senza tralasciare gli zero; i.e. "01" a "31"
  • D - giorno della settimana, testuale, 3 lettere; i.e. "Fri"
  • F - mese, testuale, long; i.e. "January"
  • g - ora, formato a 12-ore senza eventuali zero; i.e. "1" a "12"
  • G - ora, formato a 24-ore senza eventuali zero; i.e. "0" a "23"
  • h - ora, formato a 12-ore; i.e. "01" a "12"
  • H - ora, formato a 24-ore; i.e. "00" a "23"
  • i - minuti; i.e. "00" a "59"
  • I (i grande) - "1" se c'è l'ora legale, "0" altrimenti.
  • j - giorno del mese senza eventuali zero; i.e. "1" a "31"
  • l ('L' piccola) - giorno della settimana, testuale, long; i.e. "Friday"
  • L - valore booleano per stabilire se è un anno bisestile; i.e. "0" o "1"
  • m - mese; i.e. "01" a "12"
  • M - mese, testuale, 3 lettere; i.e. "Jan"
  • n - mese senza eventuali zero; i.e. "1" a "12"
  • O - Differenza in ore dal fuso orario Greenwich; i.e. "+0200"
  • r - Data formattata RFC 822; i.e. "Thu, 21 Dec 2000 16:01:07 +0200" (aggiunto nel PHP 4.0.4)
  • s - secondi; i.e. "00" a "59"
  • S - Suffisso ordinale Inglese per i giorni del mese, 2 caratteri; i.e. "th", "nd"
  • t - numero di giorni del mese dato; i.e. "28" a "31"
  • T - Fuso orario di questo computer; i.e. "MDT"
  • U - secondi dall'epoca since the epoch
  • w - giorno della settimana, numerico, i.e. "0" (Domenica) a "6" (Sabato)
  • W - ISO-8601 Numero della settimana dell'anno, le settimane iniziano il lunedì (aggiunto in PHP 4.1.0) (Sabato)
  • Y - anno, 4 cifre; i.e. "1999"
  • y - anno, 2 cifre; i.e. "99"
  • z - giorno dell'anno; i.e. "0" a "365"
  • Z - Fuso orario in secondi (i.e. "-43200" a "43200"). Il fuso orario ad ovest dell'UTC è sempre negativo, e per quelli ad est è sempre positivo.
  • Caratteri non utilizzati nella stringa del formato saranno scritti come sono. Il formato "Z" restituirà sempre "0" quando si usa gmdate().

 

Esempio 1. Esempio di date()

<?php

echo "<b>esempi di uso funzioni per date e tempo <b><br>";

$a = date ("l dS of F Y h:i:s A");

print 'Funzione date("l dS of F Y h:i:s A")<br>';

print $a."<br>";

PRINT 'Funzione date ("l", mktime(0,0,0,7,1,2000))<br>';

$a = date ("l", mktime(0,0,0,7,1,2000));

echo "il primo luglio del 2000 " .$a;

?>

il risultato:

esempi di uso funzioni per date e tempo

Funzione date("l dS of F Y h:i:s A")

Monday 18th of August 2003 03:37:10 PM

Funzione date ("l", mktime(0,0,0,7,1,2000))

il primo luglio del 2000 Saturday

 

E' possibile utilizzare un carattere utilizzabile nella stringa del formato come carattere normale facendolo semplicemente precedere dal carattere di escape, il backslash. Se il carattere con un backslash è ancora una sequenza speciale, devi inserire di nuovo il carattere di escape per il backslash.

Esempio 2. Caratteri di escape in date()

<?php

echo "<b>esempi di uso funzioni per date e tempo <b><br>";

$a = date("l \\t\h\e jS");

print 'Funzione date("l \\t\h\e jS") utilizzo di escape \<br>';

print $a."<br>";

?>

il risultato:

esempi di uso funzioni per date e tempo

Funzione date("l \t\h\e jS") utilizzo di escape \

Monday the 18th

È possibile usare date() e mktime() assieme per cercare delle date nel futuro o

nel passato.

Esempio 3. Esempio di date() e mktime()

<?php

echo "<b>esempi di uso funzioni per date e tempo <b><br>";

$domani = mktime (0,0,0,date("m") ,date("d")+1,date("Y"));

$ilmesescorso = mktime (0,0,0,date("m")-1,date("d"), date("Y"));

$annoprossimo = mktime (0,0,0,date("m"), date("d"), date("Y")+1);

print "Ecco le date in formato Unix Timestamp<br>";

print "Domani ".$domani."<br>";

print "il mese scorso ".$ilmesescorso."<br>";

print "il prossimo anno ".$annoprossimo."<br>";

setlocale (LC_TIME, "it_IT");

print (strftime ("%A.\n",$domani));

?>

ecco il risultato:

esempi di uso funzioni per date e tempo

Ecco le date in formato Unix Timestamp

Domani 1061251200

il mese scorso 1058486400

il prossimo anno 1092787200

martedì.

 

Nota: Questo può essere più affidabile della semplice addizione e sottrazione del numero di secondi in un giorno o mese a un timestamp a causa del daylight savings time.

Alcuni esempi della formattazione di date().

Nota che puoi scrivere qualsiasi altro carattere senza escape, il quale attualmente non dovrebbe produrre risultati indesiderati, ma altri caratteri potrebbero essere assegnati come caratteri della stringa di formattazione nelle prossime versioni del PHP.

Quando si utilizza il carattere di escape, assicurati di usare un singolo apice per prevenire che caratteri come \n facciano iniziare una nuova linea.

Esempio 4. Formattazione con date()

<?php

echo "<b>esempi di uso funzioni per date e tempo <b><br>";

echo "Formattazione della data odierna<br>";

echo date("F j, Y, g:i a")."<br>";

echo date("m.d.y")."<br>";

echo date("j,n, Y")."<br>";

echo date("Ymd")."<br>";

echo date('h-i-s, j-m-y, it is w Day z ')."<br>";

echo date('\i\t \i\s \t\h\e jS \d\a\y.')."<br>";

echo date("D M j G:i:s T Y")."<br>";

echo date('H:m:s \m \i\s\ \m\o\n\t\h')."<br>"; // 17:03:17 m is month

echo date("H:i:s")."<br>"; // 17:16:17

?>

ed ecco i risultati :

esempi di uso funzioni per date e tempo

Formattazione della data odierna

August 18, 2003, 4:24 pm

08.18.03

18,8, 2003

20030818

04-24-37, 18-08-03, 2431 2437 1 Monpm03 229

it is the 18th day.

Mon Aug 18 16:24:37 UTC 2003

16:08:37 m is month

16:24:37

 

Per le altre funzioni rimandiamo al manuale su www.php.net.