(PHP 4, PHP 5, PHP 7, PHP 8)
strtotime — Analizza qualsiasi descrizione datetime testuale inglese e la converte in uno Unix timestamp
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.
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.
Restituisce un timestamp in caso di successo, altrimenti false
. Prima di PHP 5.1.0,
questa funzione restituiva -1
in caso di fallimento.
Ogni chiamata a una funzione data/ora genera un E_NOTICE
se il time zone non è valido, e/o un messaggio E_STRICT
o E_WARNING
se si usano le impostazioni di sistema o la variabile d'ambiente TZ.
Vedere anche date_default_timezone_set()
Versione | Descrizione |
---|---|
5.3.0 |
Prima di PHP 5.3.0, i formati del tempo relativi forniti all'argomento
time di strtotime()
come this week , previous week ,
last week , e next week erano
interpretati per intendere un periodo di 7 giorni relativo alla data/ora corrente, invece
di un periodo settimanale di Monday a Sunday .
|
5.3.0 |
Prima di PHP 5.3.0, 24:00 non era un formato valido e
strtotime() restituiva false .
|
5.2.7 | In PHP 5 precedente a 5.2.7, richiedere una data occorrenza di un dato giorno della settimana in un mese dove il giorno della settimana era il primo giorno del mese aggiungerebbe in modo scorretto una settimana al timestamp restituito. Questo è stato corretto in 5.2.7 e nelle versioni successive. |
5.1.0 |
Ora restituisce false in caso di fallimento, invece
di -1 .
|
5.1.0 | |
5.0.2 |
In PHP 5 fino a 5.0.2, "now" e altri
tempi relativi sono erroneamente calcolati a partire dalla mezzanotte
di oggi. Questo differisce dalle altre versioni in cui viene
correttamente calcolato dal tempo corrente.
|
5.0.0 | I microsecondi hanno cominciato ad essere consentiti, ma sono ignorati. |
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);
}
?>
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
od-m-y
sono differenziati in base al separatore tra i vari componenti: se il separatore è uno slash (/
), allora è assunto l'americanom/d/y
; mentre se il separatore è un trattino (-
) o un puntino (.
), allora è assunto il formato europeod-m-y
. Se, comunque, l'anno viene dato in un formato a due cifre e il separatore è un trattino (-
, la stringa data è analizzata comey-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.