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.
I seguenti caratteri sono utilizzati nella stringa formato:
| char | significato |
|---|---|
| a | "am" o "pm" |
| A | "AM" o "PM" |
| 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 maiusc.) | "1" se c'è l'ora legale, "0" altrimenti. |
| j | giorno del mese senza eventuali zero; i.e. "1" a "31" |
| l ('L' minusc.) | 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" |
| s | secondi; i.e. "00" a "59" |
| t | numero di giorni del mese dato; i.e. "28" a "31" |
| w | giorno della settimana, numerico, i.e. "0" (Domenica) a "6" (Sabato) |
| Y | anno, 4 cifre; i.e. "1999" |
| y | anno, 2 cifre; i.e. "99" |
| z | giorno dell'anno; i.e. "0" a "365" |
$today = date("F j, Y, g:i a");
$today = date("m.d.y");
$today = date("j, n, Y");
$today = date("Ymd");
$today = date('h-i-s, j-m-y, it is w Day z ');
$today = date('\i\t \i\s \t\h\e jS \d\a\y.');
$today = date("D M j G:i:s T Y");
$today = date('H:m:s \m \i\s\ \m\o\n\t\h');
$today = date("H:i:s");
string setlocale ( mixed category, array locale )<?php
/* Impostazioni locali in italiano */
setlocale(LC_ALL, 'it');
/* Visualizza: venerdì 22 dicembre 1978 */
echo strftime("%A %d %B %Y", mktime(0, 0, 0, 12, 22, 1978));
?>
int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst])Restituisce la UNIX timestamp per una data
Le seguenti sequenze di caratteri sono utilizzate nella stringa del formato:
Per avere il giorno della settimana come decimale, dove Lunedì = 0 e Domenica = 6 si può usare la seguente espressione (strftime ("%w") + 6) % 7
Questo numero è utilizzabile anche come indice di un array di nomi di giorni ove, per esempio Array ([0] => Lunedì, [1] => Martedì, … [6] = Domenica)
DateTime in PHPLa classe DateTime di PHP offre un modo avanzato e flessibile per gestire le date e gli orari. Fornisce metodi per creare, manipolare e formattare date e orari, superando i limiti delle funzioni native come date() o time().
DateTimeL'oggetto DateTime rappresenta un'istanza di data e ora. Può essere creato senza argomenti (che rappresenterà la data e ora corrente) o con una stringa specifica che rappresenta una data.
<?php
// Creazione di un oggetto DateTime con la data e ora corrente
$dataCorrente = new DateTime();
echo $dataCorrente->format('Y-m-d H:i:s'); // Output: 2024-09-12 15:34:12 (esempio)
// Creazione di un oggetto DateTime con una data specifica
$dataSpecificata = new DateTime('2024-09-12 10:30:00');
echo $dataSpecificata->format('Y-m-d H:i:s'); // Output: 2024-09-12 10:30:00
?>
Spiegazione:
new DateTime() crea un oggetto con la data e l'ora corrente.new DateTime('2024-09-12 10:30:00') crea un oggetto con una data e ora specifica.format('Y-m-d H:i:s') permette di formattare la data e l'ora secondo lo schema indicato.La classe DateTime permette di modificare facilmente una data o un orario utilizzando il metodo modify(). È possibile passare stringhe di testo che rappresentano modifiche temporali come "next day", "+1 week", "-3 days", ecc.
<?php
$data = new DateTime('2024-09-12');
// Aggiungere 1 giorno
$data->modify('+1 day');
echo $data->format('Y-m-d'); // Output: 2024-09-13
// Sottrarre 3 giorni
$data->modify('-3 days');
echo $data->format('Y-m-d'); // Output: 2024-09-10
?>
Spiegazione:
$data->modify('+1 day') aggiunge un giorno alla data attuale.$data->modify('-3 days') sottrae tre giorni.diff)Il metodo diff() calcola la differenza tra due date e restituisce un oggetto DateInterval che rappresenta questa differenza in anni, mesi, giorni, ore, ecc.
<?php
$dataInizio = new DateTime('2024-09-01');
$dataFine = new DateTime('2024-09-12');
// Calcola la differenza tra le due date
$differenza = $dataInizio->diff($dataFine);
echo $differenza->days; // Output: 11 (numero totale di giorni)
?>
Spiegazione:
$dataInizio->diff($dataFine) restituisce un oggetto DateInterval che rappresenta la differenza tra due date.$differenza->days restituisce il numero totale di giorni tra le due date.Il metodo format() permette di formattare una data o un orario in vari formati. Accetta stringhe di formato come Y per l'anno, m per il mese, d per il giorno, e molte altre.
<?php
$data = new DateTime('2024-09-12 10:30:00');
echo $data->format('l, d F Y H:i'); // Output: Thursday, 12 September 2024 10:30
?>
Spiegazione:
format('l, d F Y H:i') restituisce una stringa che rappresenta la data in un formato leggibile (es: giovedì, 12 settembre 2024, 10:30).La classe DateTime supporta il fuso orario attraverso la classe DateTimeZone. È possibile specificare un fuso orario durante la creazione dell'oggetto DateTime o modificarlo successivamente.
<?php
$data = new DateTime('2024-09-12 10:30:00', new DateTimeZone('Europe/Rome'));
echo $data->format('Y-m-d H:i:s'); // Output: 2024-09-12 10:30:00
// Cambiare il fuso orario
$data->setTimezone(new DateTimeZone('America/New_York'));
echo $data->format('Y-m-d H:i:s'); // Output: 2024-09-12 04:30:00 (ora di New York)
?>
Spiegazione:
new DateTimeZone('Europe/Rome') imposta il fuso orario iniziale.setTimezone() permette di cambiare il fuso orario dopo la creazione dell'oggetto.DateTime da TimestampsUn timestamp è un numero che rappresenta il numero di secondi trascorsi dal 1 gennaio 1970 (epoch Unix). La classe DateTime può essere creata anche da un timestamp.
<?php
$timestamp = time(); // Ottieni il timestamp corrente
$data = (new DateTime())->setTimestamp($timestamp);
echo $data->format('Y-m-d H:i:s'); // Output: data e ora corrente
?>
Ecco un esempio che calcola una data di scadenza a partire da una data di inizio aggiungendo un periodo di 30 giorni:
<?php
$dataInizio = new DateTime('2024-09-12');
$dataInizio->modify('+30 days'); // Aggiungi 30 giorni
echo "Data di scadenza: " . $dataInizio->format('Y-m-d'); // Output: Data di scadenza: 2024-10-12
?>
Gli oggetti DateTime possono essere confrontati utilizzando gli operatori di confronto normali (<, >, ==, ecc.). Il confronto tra due oggetti DateTime restituisce true o false.
<?php
$data1 = new DateTime('2024-09-12');
$data2 = new DateTime('2024-09-15');
if ($data1 < $data2) {
echo "La data1 è prima della data2"; // Output: La data1 è prima della data2
}
?>
La classe DateTime di PHP è un potente strumento per lavorare con date e orari. Essa consente non solo di rappresentare e formattare le date, ma anche di manipolarle, confrontarle, e gestire il fuso orario in modo efficiente. Grazie ai suoi metodi flessibili, è ideale per lavorare con progetti che richiedono operazioni complesse sulle date.