strtotime
(PHP 4, PHP 5, PHP 7, PHP 8)
strtotime — Analizza qualsiasi descrizione datetime testuale inglese e la converte in uno Unix timestamp
Descrizione
La funzione si aspetta una stringa contenente un formato di data inglese
e proverà ad analizzare quel formato ed a convertirlo in uno Unix timestamp (il numero di
secondi dall'1 Gennaio 1970 00:00:00 UTC), relativo al timestamp dato
in now
, oppure all'ora corrente se
non viene fornito now
.
Ogni parametro di questa funzione usa il fuso orario predefinito a meno che non
sia specificato il fuso orario in quel parametro. Badare a non usare
diversi fusi orari in ogni parametro a meno che non sia intenzionale.
Vedere date_default_timezone_get() sui vari
modi per definire il fuso orario predefinito.
Elenco dei parametri
time
-
Una stringa data/ora. I formati validi sono descritti in Formati di Data e Tempo.
now
-
Il timestamp che è usato come base per il calcolo delle date
relative.
Valori restituiti
Restituisce un timestamp in caso di successo, altrimenti false
. Prima di PHP 5.1.0,
questa funzione restituiva -1
in caso di fallimento.
Esempi
Example #1 Un esempio di strtotime()
<?php
echo strtotime("now"), "\n";
echo strtotime("10 September 2000"), "\n";
echo strtotime("+1 day"), "\n";
echo strtotime("+1 week"), "\n";
echo strtotime("+1 week 2 days 4 hours 2 seconds"), "\n";
echo strtotime("next Thursday"), "\n";
echo strtotime("last Monday"), "\n";
?>
Example #2 Controllo per il fallimento
<?php
$str = 'Not Good';
// prima di PHP 5.1.0 si sarebbe dovuto fare il confronto con -1, invece di false
if (($timestamp = strtotime($str)) === false) {
echo "The string ($str) is bogus";
} else {
echo "$str == " . date('l dS \o\f F Y h:i:s A', $timestamp);
}
?>
Note
Nota:
Se è specificato il numero dell'anno in un formato a due cifre, i valori
tra 00-69 sono mappati a 2000-2069 e 70-99 a 1970-1999. Guardare le note
sotto per le possibili differenze sui sistemi 32bit (le possibili date potrebbero finire sul
2038-01-19 03:14:07).
Nota:
Il range valido di un timestamp è tipicamente da Fri, 13 Dec
1901 20:45:54 UTC a Tue, 19 Jan 2038 03:14:07 UTC. (Queste sono
le date che corrispondono al minimo e al massimo valore per
un intero con segno a 32-bit.)
Prima di PHP 5.1.0, non tutte le piattaforme supportano timestamp negativi, perciò
il range delle date può essere limitato a non prima della Unix epoch. Questo
significa che per esempio le date prima di Jan 1, 1970 non funzioneranno su Windows,
alcune distribuzioni Linux, e pochi altri sistemi operativi.
Per le versioni di PHP a 64-bit, il range valido di un timestamp è effettivamente
infinito, dato che 64 bit possono rappresentare approssimativamente 293 miliardi di anni in entrambi
le direzioni.
Nota:
Le date nei formati m/d/y
o d-m-y
sono differenziati in base al separatore tra i vari
componenti: se il separatore è uno slash (/
), allora
è assunto l'americano m/d/y
; mentre se il separatore è un
trattino (-
) o un puntino (.
), allora è
assunto il formato europeo d-m-y
.
Se, comunque, l'anno viene dato in un formato a due cifre e il separatore è un
trattino (-
, la stringa data è analizzata come
y-m-d
.
Per evitare potenziali ambiguità, è meglio usare le date
ISO 8601 (YYYY-MM-DD
) o
DateTime::createFromFormat() quando possibile.
Nota:
Usando questa funzione per operazioni matematiche non è consigliabile.
È meglio usare DateTime::add() e
DateTime::sub() in PHP 5.3 e successivi, o
DateTime::modify() in PHP 5.2.