Heim  >  Artikel  >  Backend-Entwicklung  >  Erläuterung des Prinzips der Zeitfunktion strtotime() in PHP

Erläuterung des Prinzips der Zeitfunktion strtotime() in PHP

不言
不言Original
2018-08-06 15:01:152350Durchsuche

Dieser Artikel stellt Ihnen das Prinzip der Zeitfunktion strtotime() in PHP vor. Ich hoffe, dass er für Freunde hilfreich ist.

Manche Leute sind oft verwirrt, wenn strtotime mit -1 Monat, +1 Monat, nächster Monat kombiniert wird, und dann haben sie das Gefühl, dass diese Funktion etwas unzuverlässig ist und bei jeder Gelegenheit Probleme verursachen kann. Ich werde sehr in Panik geraten...

Nein, jemand hat mich gerade noch einmal gefragt:

// 今天是2018-07-31 执行代码:date("Y-m-d",strtotime("-1 month"))// 怎么输出是2018-07-01?

Okay, obwohl diese Frage verwirrend erscheint, ist sie von der inneren Logik her tatsächlich „Richtig“, Keine Sorge, lassen Sie es mich langsam erklären:

Lassen Sie uns die interne Verarbeitungslogik des Datums für so etwas simulieren:

1. Führen Sie zuerst -1 Monat aus, dann ist die aktuelle Zeit 07 -31, und nach Subtraktion von eins ist es 06-31.

2. Führen Sie eine Datumsnormalisierung durch, da es im Juni keinen 31. gibt, also ist 2:60 gleich 3:00, 31. Juni entspricht dem 1. Juli
Ist die Logik sehr „klar“? Wir können den zweiten Schritt auch manuell überprüfen, z. B.:

var_dump(date("Y-m-d", strtotime("2017-06-31")));// 输出2017-07-01

Mit anderen Worten, solange es sich um den letzten Tag des großen und kleinen Monats handelt, kann dies der Fall sein Verwirrung, wir können auch ähnliche andere Monate leicht überprüfen und diese Schlussfolgerung bestätigen:

var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31"))));// 输出2017-03-03
var_dump(date("Y-m-d", strtotime("+1 month", strtotime("2017-08-31"))));// 输出2017-10-01
var_dump(date("Y-m-d", strtotime("next month", strtotime("2017-01-31"))));// 输出2017-03-03
var_dump(date("Y-m-d", strtotime("last month", strtotime("2017-03-31"))));// 输出2017-03-03

Was sollen wir tun?

Ab PHP5.3 hat date eine Reihe von Korrektursätzen zur Verdeutlichung hinzugefügt Dieses Problem, also „erster Tag von“ und „letzter Tag von“, d (Verwendet es noch jemand? ?), Sie können mktime oder ähnliches verwenden, um alle Tage zu ignorieren, sie beispielsweise einfach auf den 1. jedes Monats zu beschränken, aber das ist nicht so elegant wie die direkte Verwendung des ersten Tages

Jetzt, da Sie die internen Prinzipien verstanden haben, geraten Sie nicht mehr in Panik?

Empfohlene verwandte Artikel:

Analyse und einfache Analyse der Rolle von isset() Funktion und empty()-Funktion in PHP vergleichen

Was sind die Operationen von PHP-Array-Funktionen? Anwendung der PHP-Array-Funktion (mit Code)

Das obige ist der detaillierte Inhalt vonErläuterung des Prinzips der Zeitfunktion strtotime() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn