Computerwissenschaften

Ortszeit: So ermitteln Sie die aktuelle Uhrzeit in Perl

Ortszeit: So ermitteln Sie die aktuelle Uhrzeit in Perl

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 (time);
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
  • Gibt an, ob die Sommerzeit aktiv ist oder nicht

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 Do 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 viel besser lesbare Uhrzeit 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 Do 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 einer eigenen Variablen 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 also 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 die Kontrolle über den Offset selbst übernehmen. 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 den USA gibt einmal zurück, während ein Server in Australien aufgrund der Zeitzonenunterschiede einen fast einen ganzen Tag anderen Wert zurückgibt.

Perl verfügt über eine zweite praktische Zeiterfassungsfunktion, die genauso funktioniert wie die Ortszeit. Statt jedoch die für die Zeitzone Ihrer Maschine festgelegte Zeit zurückzugeben. wird die koordinierte Weltzeit (abgekürzt als UTC, auch Greenwich Mean Time oder GMT genannt) zurückgegeben. . Einfach gesagt heißt die Funktion  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 Do 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;
  1. localtime gibt die aktuelle Ortszeit auf dem Computer zurück, auf dem das Skript ausgeführt wird.
  2. gmtime gibt die universelle Greenwich Mean Time oder GMT (oder UTC) zurück.
  3. Die Rückgabewerte entsprechen möglicherweise nicht ganz Ihren Erwartungen. Stellen Sie daher sicher, dass Sie sie nach Bedarf konvertieren.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.