Perl verfügt über eine praktische integrierte Funktion zum Auffinden des aktuellen Datums und der aktuellen Uhrzeit in Ihren Skripten. Wenn wir jedoch über das Finden der Zeit sprechen, sprechen wir über die Zeit, die derzeit auf dem Computer eingestellt ist, auf dem das Skript ausgeführt wird. Wenn Sie beispielsweise Ihr Perl-Skript auf Ihrem lokalen Computer ausführen, gibt localtime die aktuelle Zeit zurück, die Sie festgelegt haben, und vermutlich auf Ihre aktuelle Zeitzone.
Wenn Sie dasselbe Skript auf einem Webserver ausführen, stellen Sie möglicherweise fest, dass die Ortszeit auf Ihrem Desktopsystem von der Ortszeit abweicht. Der Server befindet sich möglicherweise in einer anderen Zeitzone oder ist falsch eingestellt. Jeder Computer hat möglicherweise eine völlig andere Vorstellung von der Ortszeit und es kann einige Anpassungen erfordern, entweder innerhalb des Skripts oder auf dem Server selbst, damit er den Erwartungen entspricht.
Die Ortszeitfunktion gibt eine Liste mit Daten zur aktuellen Zeit zurück, von denen einige angepasst werden müssen. Führen Sie das folgende Programm aus, und Sie sehen jedes Element in der Liste, das in der Zeile gedruckt und durch Leerzeichen getrennt ist.
#! / usr / local / bin / perl
@timeData = localtime (Zeit);
print join ('', @timeData);
Sie sollten etwas Ähnliches sehen, obwohl die Anzahl sehr unterschiedlich sein kann.
20 36 8 27 11 105 2 360 0
Diese Elemente der aktuellen Zeit sind in der Reihenfolge:
- Sekunden nach der Minute
- Minuten nach der vollen Stunde
- Stunden nach Mitternacht
- Tag des Monats
- Monate nach Jahresbeginn
- Anzahl der Jahre seit 1900
- Anzahl der Tage seit Wochenbeginn (Sonntag)
- Anzahl der Tage seit Jahresbeginn
- Ob oder nicht Sommerzeit ist aktiv
Wenn wir also zum Beispiel zurückkehren und versuchen, es zu lesen, werden Sie feststellen, dass es am 27. Dezember 2005 8:36:20 Uhr ist, 2 Tage nach Sonntag (Dienstag) und 360 Tage seit Beginn des Beispiels Jahr. Sommerzeit ist nicht aktiv.
Perl Localtime lesbar machen
Einige der Elemente im Array, die localtime zurückgibt, sind etwas umständlich zu lesen. Wer würde an das laufende Jahr in Bezug auf die Anzahl der Jahre nach 1900 denken? Schauen wir uns ein Beispiel an, das Datum und Uhrzeit klarer macht.
#! / usr / local / bin / perl
@months = qw (Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Okt Nov Dez);
@weekDays = qw (So Mo Di Di Mi Fr Fr Sa So);
($ second, $ minute, $ hour, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();
$ year = 1900 + $ yearOffset;
$ theTime = "$ Stunde: $ Minute: $ Sekunde, $ WocheTage [$ Tag der Woche] $ Monate [$ Monat] $ Tag des Monats, $ Jahr";
print $ theTime;
Wenn Sie das Programm ausführen, sollten Sie ein viel besser lesbares Datum und eine bessere Lesbarkeit wie folgt sehen:
9:14:42, Mittwoch, 28. Dezember 2005
Was haben wir also getan, um diese besser lesbare Version zu erstellen? Zuerst bereiten wir zwei Arrays mit den Namen der Monate und Wochentage vor.
@months = qw (Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Okt Nov Dez);
@weekDays = qw (So Mo Di Di Mi Fr Fr Sa So);
Da die Ortszeitfunktion diese Elemente in Werten zwischen 0-11 und 0-6 zurückgibt, sind sie perfekte Kandidaten für ein Array. Der von localtime zurückgegebene Wert kann als numerische Adresse verwendet werden, um auf das richtige Element im Array zuzugreifen.
$ month [$ month] $ weekDays [$ dayOfWeek]
Der nächste Schritt besteht darin, alle Werte aus der Ortszeitfunktion abzurufen. In diesem Beispiel verwenden wir eine Perl-Verknüpfung, um jedes Element im Ortszeit-Array automatisch in eine eigene Variable zu platzieren. Wir haben Namen ausgewählt, damit Sie sich leicht merken können, welches Element welches ist.
($ second, $ minute, $ hour, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = localtime ();
Wir müssen auch den Wert des Jahres anpassen. Denken Sie daran, dass die Ortszeit die Anzahl der Jahre seit 1900 zurückgibt. Um das aktuelle Jahr zu ermitteln, müssen wir dem angegebenen Wert 1900 hinzufügen.
$ year = 1900 + $ yearOffset;
Wie man die aktuelle GM-Zeit in Perl anzeigt
Angenommen, Sie möchten alle möglichen Zeitzonenverwirrungen vermeiden und den Offset selbst steuern. Wenn Sie die aktuelle Zeit in der Ortszeit abrufen, wird immer ein Wert zurückgegeben, der auf den Zeitzoneneinstellungen des Computers basiert - ein Server in Die USA werden einmal zurückkehren, während ein Server in Australien aufgrund der Zeitzone einen fast einen ganzen Tag anderen Server zurückgeben wird Unterschiede.
Perl verfügt über eine zweite praktische Zeiterfassungsfunktion, die genauso funktioniert wie die Ortszeit, jedoch nicht die für Ihre Maschine festgelegte Zeit zurückgibt Zeitzonekehrt es zurück abgestimmte Weltzeit (abgekürzt als UTC, auch Greenwich Mean Time oder GMT genannt). Einfach gesagt wird die Funktion aufgerufen gmtime.
#! / usr / local / bin / perl
@timeData = gmtime (Zeit);
print join ('', @timeData);
Abgesehen von der Tatsache, dass die zurückgegebene Zeit auf jeder Maschine gleich ist und in GMT gibt es keinen Unterschied zwischen den Funktionen gmtime und localtime. Alle Daten und Konvertierungen werden auf die gleiche Weise durchgeführt.
#! / usr / local / bin / perl
@months = qw (Jan Feb Mar Apr Mai Jun Jul Aug Sep Okt Okt Nov Dez);
@weekDays = qw (So Mo Di Di Mi Fr Fr Sa So);
($ second, $ minute, $ hour, $ dayOfMonth, $ month, $ yearOffset, $ dayOfWeek, $ dayOfYear, $ daylightSavings) = gmtime ();
$ year = 1900 + $ yearOffset;
$ theGMTime = "$ Stunde: $ Minute: $ Sekunde, $ WocheTage [$ Tag der Woche] $ Monate [$ Monat] $ Tag des Monats, $ Jahr";
print $ theGMTime;
- localtime gibt die aktuelle Ortszeit auf dem Computer zurück, auf dem das Skript ausgeführt wird.
- gmtime gibt die universelle Greenwich Mean Time oder GMT (oder UTC) zurück.
- Die Rückgabewerte entsprechen möglicherweise nicht ganz Ihren Erwartungen. Stellen Sie daher sicher, dass Sie sie nach Bedarf konvertieren.