Umgang mit Daten und Zeiten in jeder Programmiersprache ist oft eine einfache und triviale Aufgabe, bis die Zeitzone unterstützt werden muss. Glücklicherweise verfügt PHP über eine Reihe leistungsstarker Datums-/Uhrzeit-Tools, mit denen Sie mit verschiedenen zeitlichen Problemen umgehen können: UNIX-Zeitstempel, Formatdaten für menschliches Lesen, Anzeigendaten mit Zeitzonen, berechnen Sie den Zeitunterschied zwischen jetzt und dem zweiten Dienstag des nächsten Monats und mehr. In diesem Artikel werden die Zeitfunktionen von PHP (time()
, mktime()
und date()
) und ihre objektorientierten Gegenstücke vorgestellt und dann etwas über MySQL-Daten erfahren und Ihnen zeigen, wie sie mit PHP perfekt zusammenarbeiten können.
Hauptgewinne
- Effizient mit UNIX -Zeitstempeln und formatierten Daten mit leistungsstarken Datums- und Zeitfunktionen von PHP wie
time()
,mktime()
unddate()
handhaben. - verwenden Sie die Objekte von PHP
DateTime
undDateTimeZone
für objektorientierte Datums- und Uhrzeitoperationen, einschließlich der Behandlung verschiedener Zeitzonen. - Speichern Sie Daten in MySQL als UNIX -Zeitstempel, um die Konsistenz zwischen verschiedenen Zeitzonen und der Konvertierung und Formatierung mithilfe der Datums-/Zeitfunktion von PHP aufrechtzuerhalten.
- Stellen Sie die Standardzeitzone des Servers in UTC in der PHP -Konfiguration fest, um Datum und Zeitverwaltung zu vereinfachen und die Anwendungskonsistenz sicherzustellen.
Php Datum und Zeitfunktion
Der größte Teil dieses Artikels verwendet die Unix -Zeit, auch als POSIX -Zeit oder Epochenzeit bezeichnet. Die Zeit wird ausgedrückt, wenn die Anzahl der Sekunden seit Mitternacht UTC am 1. Januar 1970 abgelaufen ist. Wenn Sie an der gesamten Geschichte der Unix -Zeit interessiert sind, lesen Sie den Artikel von Unix Time über Wikipedia. UTC (koordinierte universelle Zeit), auch als GMT bekannt, ist die Zeit der 0-Grad-Längengradlinie. Alle anderen Zeitzonen der Welt werden als positive oder negative Offsets in Bezug auf diese Zeit dargestellt. Durch die Verwendung von UTC und Unix Time to zu verarbeiten, erleichtert Ihr Leben, wenn Sie Zeitzonen verarbeiten müssen. Ich werde später ausführlich darauf eingehen, aber vorerst ignorieren wir das Zeitzonenproblem und sehen uns einige Zeitfunktionen an.
Holen Sie sich die aktuelle Unix -Zeit
time()
akzeptiert keine Parameter und gibt die Anzahl der Sekunden seit der UNIX -Epoche zurück. Um dies zu veranschaulichen, werde ich die Php Interactive CLI Shell verwenden.
sean@beerhaus:~$ php -a php > print time(); 1324402770
Wenn Sie eine Array -Darstellung der Unix -Zeit benötigen, verwenden Sie die Funktion getdate()
. Es akzeptiert einen optionalen UNIX -Zeitstempelparameter, jedoch standardmäßig einen Wert von time()
, wenn nicht angegeben.
php > $unixTime = time(); php > print_r(getdate($unixTime)); Array ( [seconds] => 48 [minutes] => 54 [hours] => 12 [mday] => 20 [wday] => 2 [mon] => 12 [year] => 2011 [yday] => 353 [weekday] => Tuesday [month] => December [0] => 1324403688 )
Format Unix Time
Unix -Zeit kann leicht zu jeder Zeichenfolge formatiert werden, die Menschen lesen möchten. date()
wird verwendet, um Unix-Zeitstempel in menschlich-lesbare Zeichenfolgen zu formatieren und einen Formatparameter und einen optionalen Zeitparameter zu akzeptieren. Wenn kein optionaler Zeitstempel bereitgestellt wird, wird der Wert von time()
verwendet.
sean@beerhaus:~$ php -a php > print time(); 1324402770
"R" Format String gibt die von RFC 2822 angegebene Formatierungszeit zurück. Natürlich können Sie andere Spezifizierer verwenden, um Ihr eigenes benutzerdefiniertes Format zu definieren.
php > $unixTime = time(); php > print_r(getdate($unixTime)); Array ( [seconds] => 48 [minutes] => 54 [hours] => 12 [mday] => 20 [wday] => 2 [mon] => 12 [year] => 2011 [yday] => 353 [weekday] => Tuesday [month] => December [0] => 1324403688 )
Siehe die Seite von date()
in der PHP -Dokumentation für eine vollständige Liste akzeptabler formatierter Zeichen. In Verbindung mit den Funktionen mktime()
und strtotime()
wird die Funktion jedoch nützlicher, wie Sie in den folgenden Beispielen sehen werden.
Erstellen Sie die Unix -Zeit basierend auf einer bestimmten Zeit
mktime()
wird verwendet, um Unix -Zeitstempel basierend auf einer Liste von Werten (Sekunden, Minuten, Stunden, Jahre usw.) zu erstellen, die jedem Teil des Datums entsprechen. Es akzeptiert viele Ganzzahlparameter und setzt jeden Teil des Datums in der folgenden Reihenfolge fest:
php > print date("r", $unixTime); Tue, 20 Dec 2011 12:54:48 -0500
Set isDST
auf 1, wenn die Sparenzeit für Tageslicht auf 0 eingestellt ist.
php > print date("m/d/y h:i:s a", $unixTime); 12/20/11 12:54:48 pm php > print date("m/d/y h:i:s a"); 12/20/11 01:12:11 pm php > print date("jS of F Y", $unixTime); 20th of December 2011
Sie können sehen, dass mktime()
bei der Bearbeitung von Datenbankabfragen mit den benutzerdefinierten Datumsbereichen sehr nützlich ist. Wenn Sie beispielsweise Zeitstempel als Ganzzahlen (UNIX-Zeit) in MySQL (Vorhaben jemanden?) Speichern, ist es einfach, ein gemeinsames Abfragebereich von Jahr zu Jahr festzulegen.
<code>mktime(hour, minute, second, month, day, year, isDST)</code>
Englischdaten auf Unix -Zeit auflösen
Fast magische Funktion strtotime()
nimmt eine Zeichenfolge im Datum/Zeitformat als erstes Argument und einen Unix -Zeitstempel, der als Basis für die Konvertierung verwendet wird. Weitere Informationen zu akzeptablen Datumsformaten finden Sie in der Dokumentation.
php > print date("r", mktime(12, 0, 0, 1, 20, 1987)); Tue, 20 Jan 1987 12:00:00 -0500 php > print date("r", mktime(0, 0, 0, date("n"), date("j"), date("Y"))); Tue, 20 Dec 2011 00:00:00 -0500 php > print date("r", mktime(23, 59, 59, date("n"), date("j"), date("Y"))); Tue, 20 Dec 2011 23:59:59 -0500
Phps DateTime- und DateTimeZone -Objekte
Phps DateTime
Objekt ist eine objektorientierte Methode, die Daten und Zeitzonen behandelt. Der Konstruktor akzeptiert eine String -Darstellung der Zeit, die dem oben genannten strtotime()
sehr ähnlich ist, das einige Menschen möglicherweise einfacher zu bedienen finden. Wenn keine Parameter bereitgestellt werden, lautet der Standardwert "jetzt".
<?php $startTime = mktime(0, 0, 0, 1, 1, date("y")); $endTime = mktime(0, 0, 0, date("m"), date("d"), date("y"));Die
DateTime
-Methode von format()
funktioniert genauso wie die oben date()
-Funktion und akzeptiert alle die gleichen formatierten Zeichen. Das DateTime
-Objekt wird auch mit einigen nützlichen Konstanten ausgestattet, die der Methode format()
zugeführt werden können.
php > print strtotime("now"); 1324407707 php > print date("r", strtotime("now")); Tue, 20 Dec 2011 14:01:51 -0500 php > print strtotime("+1 week"); 1325012569 php > print date("r", strtotime("+1 week")); Tue, 27 Dec 2011 14:03:03 -0500 php > print date("r", strtotime("next month")); Fri, 20 Jan 2012 14:04:20 -0500 php > print date("r", strtotime("next month", mktime(0, 0, 0))); Fri, 20 Jan 2012 00:00:00 -0500 php > print date("r", strtotime("next month", mktime(0, 0, 0, 1, 31))); Thu, 03 Mar 2011 00:00:00 -0500
Die vollständige Liste der Konstanten finden Sie auf der Dokumentseite DateTime
. Da wir uns bald mit der Zeitzone auseinandersetzen werden, geben wir eine Standardzeitzone für PHP an. Suchen Sie in Ihrer Php.ini -Konfigurationsdatei (ich habe eine für CLI und eine für Apache) den Abschnitt wie unten gezeigt:
php > $dt = new DateTime("now"); php > print $dt->format("r"); Tue, 20 Dec 2011 16:28:32 -0500 php > $dt = new DateTime("December 31 1999 12:12:12 EST"); php > print $dt->format("r"); Fri, 31 Dec 1999 12:12:12 -0500
Wenn date.timezone
kein Wert zugeordnet wird, wird PHP sein Bestes geben, um die auf dem Server festgelegte Systemzeitzone zu bestimmen. Sie können date_default_timezone_get()
verwenden, um zu überprüfen, welcher Wert PHP verwendet.
sean@beerhaus:~$ php -a php > print time(); 1324402770
setzen wir die Zeitzone des Servers auf die UTC -Zeit (date.timezone = UTC
) und speichern Sie die Konfigurationsdatei. Sie müssen Apache oder CLI -Shell neu starten, um die Änderungen anzuzeigen. Das Php DateTime
-Objekt enthält eine interne DateTimeZone
-Klassinstanz, um die Zeitzone zu verfolgen. Wenn Sie eine neue Instanz von DateTime
erstellen, sollte der interne DateTimeZone
auf den in php.ini bereitgestellten Standardwert festgelegt werden.
php > $unixTime = time(); php > print_r(getdate($unixTime)); Array ( [seconds] => 48 [minutes] => 54 [hours] => 12 [mday] => 20 [wday] => 2 [mon] => 12 [year] => 2011 [yday] => 353 [weekday] => Tuesday [month] => December [0] => 1324403688 )
Die vollständige Liste der akzeptablen Zeitzonennamen finden Sie auf der Zeitzone -Dokumentseite. Sie können jetzt den Zeitunterschied sehen, wenn zwei DateTime
-Objekte unterschiedliche Zeitzonen erhalten. Zum Beispiel ist hier ein Beispiel für die Konvertierung von UTC in Amerika/new_york (EST).
php > print date("r", $unixTime); Tue, 20 Dec 2011 12:54:48 -0500
Bitte beachten Sie den Offset -0500 im Dezember. Wenn Sie den Zeitwert auf ein Sommerdatum wie den 1. Juli ändern, werden Sie feststellen, dass es die Tageslichtsparenzeit (EDT) kennt.
php > print date("m/d/y h:i:s a", $unixTime); 12/20/11 12:54:48 pm php > print date("m/d/y h:i:s a"); 12/20/11 01:12:11 pm php > print date("jS of F Y", $unixTime); 20th of December 2011
Verwenden Sie Daten mit MySQL und Php
Wenn Sie MySQL auf einer beliebigen Ebene verwendet haben, haben Sie möglicherweise den DateTime -Typ festgestellt, der nicht in der Box funktioniert. Es sieht aus und riecht nach einem Date, und wenn Sie sagen, es ist ein Datum, haben Sie Recht. Sobald Sie es jedoch von MySQL in PHP ausgewählt haben, haben Sie nur eine Zeichenfolge, die wie ein Datum aussieht. Es hat kein Zeitzonenbewusstsein und ist für den menschlichen Gebrauch formatiert, bevor der Mensch es anzeigen muss. Ja, ich weiß, dass MySQL viele Date -Formatierungsfunktionen hat, aber wir verwenden bereits PHP, und wie Sie sehen können, ist PHP hervorragend in der Handhabungsdatumformate. Warum müssen wir es auch direkt aus der Datenbank formatieren? Möglicherweise müssen wir verschiedene Conversions und Formate anwenden. Es ist am besten, das Datum nur dann zu formatieren, wenn Menschen es sehen.
<code>mktime(hour, minute, second, month, day, year, isDST)</code>
Führen Sie dieses einfache Skript aus und Sie können sehen, dass alles, was Sie aus dem Feld DateTime erhalten, eine formatierte Zeichenfolge ohne Zeitzoneninformationen ist.
php > print date("r", mktime(12, 0, 0, 1, 20, 1987)); Tue, 20 Jan 1987 12:00:00 -0500 php > print date("r", mktime(0, 0, 0, date("n"), date("j"), date("Y"))); Tue, 20 Dec 2011 00:00:00 -0500 php > print date("r", mktime(23, 59, 59, date("n"), date("j"), date("Y"))); Tue, 20 Dec 2011 23:59:59 -0500
DateTime -Wert ist die lokale Zeit des Servers, die MySQL ausführen, unabhängig von der Zeitzone dieses Servers. Wenn Sie nur einen Server in eine Zeitzone einbeziehen, ist DateTime für die meisten Ihrer Bedürfnisse möglicherweise geeignet, und ich bin sehr neidisch auf Sie. Wie benutze ich PHP und MySQL, um mit Daten und Zeitzonen umzugehen? Speichern Sie Daten als Unix -Zeitstempel. Sie wissen bereits, dass die Unix -Zeit die Anzahl der Sekunden seit der UTC am 1. Januar 1970 ist. Dadurch erhalten Sie eine konstante Zeitzone, und Sie haben möglicherweise festgestellt, dass viele Datums-/Zeitfunktionen von PHP auf UNIX -Zeitstempeln basieren. Bei Verwendung von MySQL erstelle ich normalerweise eine Tabellenspalte, in der Daten als ganzzahlige nicht signierte Vorzeichen gespeichert sind. Wenn Sie ein Datum einfügen, können Sie PHPs time()
oder Mysql UNIX_TIMESTAMP()
verwenden.
<?php $startTime = mktime(0, 0, 0, 1, 1, date("y")); $endTime = mktime(0, 0, 0, date("m"), date("d"), date("y"));
Wenn Sie möchten, dass MySQL Daten formatieren, können Sie dies tun. Die Zeit ist jedoch in der Zeitzone des Servers, die MySQL ausführen, und ich empfehle, dass Sie keine Formatierung durchführen, wenn Sie die Vorlage/Ansichtspegel Ihrer Webanwendung erreichen und bereit sind, sie zu sehen.
sean@beerhaus:~$ php -a php > print time(); 1324402770
In jeder Anwendung, die Zeitzonen umfasst, haben Sie normalerweise eine Tabelle, die die benutzerdefinierten Zeitzoneneinstellungen des Benutzers verfolgt und sie dann in den Wert $_SESSION
liest. Angenommen, Sie haben einen Sitzungseintrag, wie unten gezeigt:
php > $unixTime = time(); php > print_r(getdate($unixTime)); Array ( [seconds] => 48 [minutes] => 54 [hours] => 12 [mday] => 20 [wday] => 2 [mon] => 12 [year] => 2011 [yday] => 353 [weekday] => Tuesday [month] => December [0] => 1324403688 )
Sie können die gespeicherten Unix -Zeiten (in UTC) einfach in die Zeitzone eines bestimmten Benutzers um konvertieren.
php > print date("r", $unixTime); Tue, 20 Dec 2011 12:54:48 -0500
Dies führt zu dem Datum "Mon, 16. Januar 2012 12:03:49 -0600". -0600 sagt Ihnen, dass es 6 Stunden hinter UTC und der Offset von UTC 0 liegt. Wenn wir die Zeitzone auf Amerika/los_angeles festlegen, lautet das generierte Datum:
php > print date("m/d/y h:i:s a", $unixTime); 12/20/11 12:54:48 pm php > print date("m/d/y h:i:s a"); 12/20/11 01:12:11 pm php > print date("jS of F Y", $unixTime); 20th of December 2011
und America/new_york werden erzeugen:
<code>mktime(hour, minute, second, month, day, year, isDST)</code>
Zusammenfassung
Handhabungsdaten und Zeitzonen sind Teil des täglichen Lebens vieler Programmierer, aber es besteht keine Notwendigkeit, sich Sorgen zu machen, wenn Sie die leistungsstarke und benutzerfreundliche Date-Bibliothek von PHP verwenden können. Sie haben gelernt, wie man Unix -Zeitstempel bekommt, wie man Termine in jedem erdenklichen Format formatiert, wie man die englische Darstellung von Daten in Zeitstempel analysiert, wie man Zeitstempel einhält und wie man zwischen Zeitzonen umwandelt. Wenn es in diesem Artikel zwei Hauptpunkte gibt, ist es 1) die Unix -Zeit und 2) bei der Verwendung von PHP und MySQL als Basiszeitzone als Basiszeitzone festhalten. Die Idee aller Zeiten, die auf UTC basieren, gilt nicht nur für PHP und MySQL. Wenn Sie in einer anderen Sprache arbeiten, besteht eine gute Chance, dass Sie sich selbst sagen werden: "Verdammt, warum können sie nicht das Gleiche wie PHP tun?"
Bilder von Yakobchuk Vasyl / Shutterstock
(Der FAQ -Abschnitt sollte hier zum FAQ -Abschnitt zum Umgang mit Daten und Zeiten in PHP hinzugefügt werden, ähnlich dem FAQ -Abschnitt im Eingabetxt. Ich habe es hier aufgrund von Platzbeschränkungen nicht hinzugefügt.)
Das obige ist der detaillierte Inhalt vonArbeiten mit Daten und Zeiten in PHP und MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

PHP -Typ -Eingabeaufforderungen zur Verbesserung der Codequalität und der Lesbarkeit. 1) Tipps zum Skalartyp: Da Php7.0 in den Funktionsparametern wie int, float usw. angegeben werden dürfen. 3) Eingabeaufforderung für Gewerkschaftstyp: Da Php8.0 in Funktionsparametern oder Rückgabetypen angegeben werden dürfen. 4) Nullierstyp Eingabeaufforderung: Ermöglicht die Einbeziehung von Nullwerten und Handlungsfunktionen, die Nullwerte zurückgeben können.

Verwenden Sie in PHP das Klonschlüsselwort, um eine Kopie des Objekts zu erstellen und das Klonierungsverhalten über die \ _ \ _ Clone Magic -Methode anzupassen. 1. Verwenden Sie das Klonschlüsselwort, um eine flache Kopie zu erstellen und die Eigenschaften des Objekts, nicht die Eigenschaften des Objekts zu klonen. 2. Die \ _ \ _ Klonmethode kann verschachtelte Objekte tief kopieren, um flache Kopierprobleme zu vermeiden. 3. achten Sie darauf, dass kreisförmige Referenzen und Leistungsprobleme beim Klonen vermieden werden, und optimieren Sie die Klonierungsvorgänge, um die Effizienz zu verbessern.

PHP eignet sich für Webentwicklungs- und Content -Management -Systeme, und Python eignet sich für Datenwissenschafts-, maschinelles Lernen- und Automatisierungsskripte. 1.PHP hat eine gute Leistung beim Erstellen von schnellen und skalierbaren Websites und Anwendungen und wird üblicherweise in CMS wie WordPress verwendet. 2. Python hat sich in den Bereichen Datenwissenschaft und maschinelles Lernen mit reichen Bibliotheken wie Numpy und TensorFlow übertrifft.

Zu den wichtigsten Spielern in HTTP-Cache-Headern gehören Cache-Control, ETAG und Last-modifiziert. 1.Cache-Control wird verwendet, um die Richtlinien zu kontrollieren. Beispiel: Cache-Control: max-ay = 3600, öffentlich. 2. ETAG überprüft Ressourcenänderungen durch eindeutige Identifikatoren, Beispiel: ETAG: "686897696A7C876B7E". 3. Last-modifiziert gibt die letzte Änderungszeit der Ressource an, Beispiel: Last-Modified: Mi, 21okt201507: 28: 00GMT.

In PHP sollten die Funktionen für Passwort_Hash und passwart_verify verwendet werden, um sicheres Passwort -Hashing zu implementieren, und MD5 oder SHA1 sollte nicht verwendet werden. 1) Passwort_hash generiert einen Hash, der Salzwerte enthält, um die Sicherheit zu verbessern. 2) Passwort_Verify prüfen Sie das Passwort und sicherstellen Sie die Sicherheit, indem Sie die Hash -Werte vergleichen. 3) MD5 und SHA1 sind anfällig und fehlen Salzwerte und sind nicht für die Sicherheit der modernen Passwort geeignet.

PHP ist eine serverseitige Skriptsprache, die für dynamische Webentwicklung und serverseitige Anwendungen verwendet wird. 1.PHP ist eine interpretierte Sprache, die keine Zusammenstellung erfordert und für die schnelle Entwicklung geeignet ist. 2. PHP -Code ist in HTML eingebettet, wodurch es einfach ist, Webseiten zu entwickeln. 3. PHP verarbeitet die serverseitige Logik, generiert die HTML-Ausgabe und unterstützt Benutzerinteraktion und Datenverarbeitung. 4. PHP kann mit der Datenbank interagieren, die Einreichung von Prozessformularen und serverseitige Aufgaben ausführen.

PHP hat das Netzwerk in den letzten Jahrzehnten geprägt und wird weiterhin eine wichtige Rolle bei der Webentwicklung spielen. 1) PHP stammt aus dem Jahr 1994 und ist aufgrund seiner Benutzerfreundlichkeit und der nahtlosen Integration in MySQL die erste Wahl für Entwickler. 2) Zu den Kernfunktionen gehört das Generieren dynamischer Inhalte und die Integration in die Datenbank, sodass die Website in Echtzeit aktualisiert und auf personalisierte Weise angezeigt wird. 3) Die breite Anwendung und das Ökosystem von PHP hat seine langfristigen Auswirkungen angetrieben, steht jedoch auch mit Versionsaktualisierungen und Sicherheitsherausforderungen gegenüber. 4) Leistungsverbesserungen in den letzten Jahren, wie die Veröffentlichung von PHP7, ermöglichen es ihm, mit modernen Sprachen zu konkurrieren. 5) In Zukunft muss PHP sich mit neuen Herausforderungen wie Containerisierung und Microservices befassen, aber seine Flexibilität und die aktive Community machen es anpassungsfähig.

Zu den Kernvorteilen von PHP gehören einfacher Lernen, starke Unterstützung für Webentwicklung, reiche Bibliotheken und Rahmenbedingungen, hohe Leistung und Skalierbarkeit, plattformübergreifende Kompatibilität und Kosteneffizienz. 1) leicht zu erlernen und zu bedienen, geeignet für Anfänger; 2) gute Integration in Webserver und unterstützt mehrere Datenbanken. 3) leistungsstarke Frameworks wie Laravel; 4) hohe Leistung kann durch Optimierung erzielt werden; 5) mehrere Betriebssysteme unterstützen; 6) Open Source, um die Entwicklungskosten zu senken.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

Dreamweaver CS6
Visuelle Webentwicklungstools

Dreamweaver Mac
Visuelle Webentwicklungstools