Perl Datum und Uhrzeit

In diesem Kapitel stellen wir vor, wie die Sprache Perl Datum und Uhrzeit handhabt.

Perl bietet die folgenden Funktionen zur Handhabung von Zeit:

  • 1. Die Funktion time():Gibt die kumulierten Sekunden seit dem 1. Januar 1970 zurück
  • 2. Die Funktion localtime():Ermittelt die lokale Zeitzonenzeit
  • 3. Die Funktion gmtime():Ermittelt die Greenwich Mean Time

Aktuelles Datum und Uhrzeit

Als Nächstes werfen wir einen Blick auf dielocaltime()-Funktion, die die aktuelle Uhrzeit und das aktuelle Datum zurückgibt, wenn sie ohne Parameter aufgerufen wird.

Die folgenden 9 Symbole repräsentieren verschiedene Zeit- und Datumsparameter:

sec,     # 秒, 0 到 61
min,     # 分钟, 0 到 59
hour,    # 小时, 0 到 24
mday,    # 天, 1 到 31
mon,     # 月, 0 到 11
year,    # 年,从 1900 开始
wday,    # 星期几,0-6,0表示周日
yday,    # 一年中的第几天,0-364,365
isdst    # 如果夏令时有效,则为真

Die Beispielvorführung ist wie folgt:

Beispiel

#!/usr/bin/perl @months = qw(January February March April May June July August September October November December); @days = qw(Sunday Monday Tuesday Wednesday Thursday Friday Saturday); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); print "$mday $months[$mon] $days[$wday]\n";

Die Ausgabe des obigen Beispiels ist:

12 六月 星期天

Wenn Sie localtime() direkt aufrufen, gibt es die Zeit in der aktuell im System konfigurierten Zeitzone zurück, wie im folgenden Beispiel gezeigt:

Beispiel

#!/usr/bin/perl $datestring = localtime(); print "Das Datum und die Uhrzeit sind:$datestring\n";

Die Ausgabe des obigen Beispiels ist:

时间日期为:Sun Jun 12 11:27:31 2016

Mittlere Greenwich-Zeit (GMT)

Die Funktiongmtime()ähnelt localtime(), gibt aber die mittlere Greenwich-Zeit zurück.

Beispiel

#!/usr/bin/perl $local_datestring = localtime(); print "Das lokale Datum und die lokale Uhrzeit sind:$local_datestring\n"; $gmt_datestring = gmtime(); print "Das GMT-Datum und die GMT-Uhrzeit sind:$gmt_datestring\n";

Die Ausgabe des obigen Beispiels ist:

本地时间日期为:Sun Jun 12 11:32:14 2016
GMT 时间日期为:Sun Jun 12 03:32:14 2016

Aus dem Beispiel können wir ersehen, dass die chinesische Zeit 8 Stunden vor der mittleren Greenwich-Zeit liegt.


Formatieren von Datum und Uhrzeit

Wir können die 9 Zeitelemente der Funktion localtime() verwenden, um die Zeit in einem gewünschten Format auszugeben. Verwenden Sie die Funktion printf() für die formatierte Ausgabe:

Beispiel

#!/usr/bin/perl ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); printf("Formatierte Zeit: HH:MM:SS\n"); printf("%02d:%02d:%02d", $hour, $min, $sec);

Die Ausgabe des obigen Beispiels ist:

格式化时间:HH:MM:SS
11:35:23

Epoch-Zeit

Wir können die Funktion time() verwenden, um die Epoch-Zeit zu erhalten, die die kumulierten Sekunden seit dem 1. Januar 1970 zurückgibt. Hier ist ein Beispiel:

Beispiel

#!/usr/bin/perl $epoc = time(); print "Die kumulierten Sekunden seit dem 1. Januar 1970 sind:$epoc\n";

Die Ausgabe des obigen Beispiels ist:

从1970年1月1日起累计的秒数为:1465702883

Wir können ein Zeitformat unserer Wahl ausgeben:

Beispiel

#!/usr/bin/perl ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(); print "Aktuelle Uhrzeit und Datum:"; printf("%d-%d-%d %d:%d:%d",$year+1900,$mon+1,$mday,$hour,$min,$sec); print "\n"; $epoc = time(); $epoc = $epoc - 24 * 60 * 60; # Sekunden der Zeit von vor einem Tag ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($epoc); print "Zeit und Datum von gestern:"; printf("%d-%d-%d %d:%d:%d",$year+1900,$mon+1,$mday,$hour,$min,$sec); print "\n";

Die Ausgabe des obigen Beispiels ist:

当期时间和日期:2017-3-15 12:47:54
昨天时间和日期:2017-3-14 12:47:54

POSIX-Funktion strftime()

Die Funktion strftime() kann Zeit in das Format formatieren, das wir wollen.

Die folgende Tabelle listet einige Formatierungssymbole auf; das * gibt an, dass es von der Ortszeit abhängt:

Symbol Beschreibung Beispiel
%a Abgekürzter Wochentagsname (So..Sa) * Thu
%A Vollständiger Wochentagsname (Sonntag..Samstag) * Thursday
%b Abgekürzter Monatsname (Jan..Dez) * Aug
%B Vollständiger Monatsname (Januar..Dezember) * August
%c Datum und Uhrzeit * Thu Aug 23 14:55:02 2001
%C Jahr geteilt durch 100 und abgerundet (00-99) 20
%d Tag des Monats (01-31) 23
%D Datum,MM/DD/YYentspricht%m/%d/%y 08/23/01
%e Tag des Monats, einstellige Ziffern mit Leerzeichen aufgefüllt ( 1-31) 23
%F YYYY-MM-DDDie Abkürzung ist ähnlich wie%Y-%m-%d 2001-08-23
%g Letzte zwei Ziffern des Jahres (00-99) 01
%g Jahr 2001
%h Abgekürzter Monatsname * (gleich wie%bOption) Aug
%H24-Stunden-Format (00-23) 14
%I 12-Stunden-Format (01-12) 02
%j Tag des Jahres (001-366) 235
%m Monat (01-12) 08
%M Minute (00-59) 55
%n Zeilenumbruch ('\n')
%pZeigt AM oder PM an PM
%r Zeit (hh:mm:ss AM oder PM), 12-Stunden * 02:55:02 pm
%R 24-StundenHH:MMZeitformat, äquivalent zu%H:%M 14:55
%S Sekunden (00-61) 02
%t Horizontaler Tabulator ('\t')
%T Zeit (24-Stunden-Format) (hh:mm:ss), entspricht%H:%M:%S 14:55
%u ISO-8601-Wochentagsformat, Montag ist1 (1-7) 4
%U Wochennummer des Jahres, Sonntag als erster Tag (00-53) 33
%V ISO-8601-Wochennummer (00-53) 34
%w Wochentag (0 steht für Sonntag) (0-6) 4
%W Wochennummer des Jahres, Montag als erster Tag (00-53) 34
%x Zeigt Datumsformat (mm/dd/yy) an * 08/23/01
%X Zeigt Zeitformat an * 14:55:02
%y Jahr, zwei Ziffern (00-99) 01
%Y Jahr 2001
%z ISO-8601-Zeitzonenversatz von UTC (1 Minute = 1, 1 Stunde = 100)

+100
%Z Name der aktuellen Zeitzone, z. B. "China Standard Time" *

CDT
%% %Symbol %

Beispiel

#!/usr/bin/perl use POSIX qw(strftime); $datestring = strftime "%Y-%m-%d %H:%M:%S", localtime; printf("Datum und Uhrzeit -$datestring\n"); # GMT-formatiertes Datum und Uhrzeit $datestring = strftime "%Y-%m-%d %H:%M:%S", gmtime; printf("Datum und Uhrzeit -$datestring\n");

Die Ausgabe des obigen Beispiels ist:

时间日期 - 2016-06-12 12:15:13
时间日期 - 2016-06-12 04:15:13
Andere Erweiterungen