Perl - Datum und Uhrzeit

In diesem Kapitel erhalten Sie grundlegende Informationen zum Verarbeiten und Bearbeiten von Datums- und Uhrzeitangaben in Perl.

Aktuelles Datum und Uhrzeit

Lass uns beginnen mit localtime()Funktion, die Werte für das aktuelle Datum und die aktuelle Uhrzeit zurückgibt, wenn keine Argumente angegeben werden. Es folgt die 9-Elemente-Liste, die von der zurückgegeben wirdlocaltime Funktion bei Verwendung im Listenkontext -

sec,     # seconds of minutes from 0 to 61
min,     # minutes of hour from 0 to 59
hour,    # hours of day from 0 to 24
mday,    # day of month from 1 to 31
mon,     # month of year from 0 to 11
year,    # year since 1900
wday,    # days since sunday
yday,    # days since January 1st
isdst    # hours of daylight savings time

Versuchen Sie das folgende Beispiel, um verschiedene Elemente zu drucken, die von der Funktion localtime () zurückgegeben werden.

#!/usr/local/bin/perl
 
@months = qw( Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec );
@days = qw(Sun Mon Tue Wed Thu Fri Sat Sun);

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
print "$mday $months[$mon] $days[$wday]\n";

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:

16 Feb Sat

Wenn Sie die Funktion localtime () im skalaren Kontext verwenden, werden Datum und Uhrzeit aus der im System festgelegten aktuellen Zeitzone zurückgegeben. Versuchen Sie das folgende Beispiel, um das aktuelle Datum und die aktuelle Uhrzeit im Vollformat zu drucken:

#!/usr/local/bin/perl
 
$datestring = localtime();
print "Local date and time $datestring\n";

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:

Local date and time Sat Feb 16 06:50:45 2013

GMT-Zeit

Die Funktion gmtime()funktioniert genau wie die Funktion localtime (), aber die zurückgegebenen Werte sind für die Standard-Greenwich-Zeitzone lokalisiert. Beim Aufruf im Listenkontext ist $ isdst, der letzte von gmtime zurückgegebene Wert, immer 0. In GMT gibt es keine Sommerzeit.

Beachten Sie, dass localtime () die aktuelle Ortszeit auf dem Computer zurückgibt, auf dem das Skript ausgeführt wird, und gmtime () die universelle Greenwich Mean Time oder GMT (oder UTC) zurückgibt.

Versuchen Sie das folgende Beispiel, um das aktuelle Datum und die aktuelle Uhrzeit zu drucken, jedoch im GMT-Maßstab -

#!/usr/local/bin/perl

$datestring = gmtime();
print "GMT date and time $datestring\n";

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:

GMT date and time Sat Feb 16 13:50:45 2013

Formatieren Sie Datum und Uhrzeit

Sie können die Funktion localtime () verwenden, um eine Liste mit 9 Elementen abzurufen, und später können Sie die Funktion verwenden printf() Funktion zum Formatieren von Datum und Uhrzeit basierend auf Ihren Anforderungen wie folgt:

#!/usr/local/bin/perl
 
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();

printf("Time Format - HH:MM:SS\n");
printf("%02d:%02d:%02d", $hour, $min, $sec);

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:

Time Format - HH:MM:SS
06:58:52

Epochenzeit

Mit der Funktion time () können Sie die Epochenzeit abrufen, dh die Anzahl der Sekunden, die seit einem bestimmten Datum vergangen sind. In Unix ist der 1. Januar 1970.

#!/usr/local/bin/perl
 
$epoc = time();

print "Number of seconds since Jan 1, 1970 - $epoc\n";

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:

Number of seconds since Jan 1, 1970 - 1361022130

Sie können eine bestimmte Anzahl von Sekunden wie folgt in Datums- und Zeitzeichenfolge konvertieren:

#!/usr/local/bin/perl

$datestring = localtime();
print "Current date and time $datestring\n";

$epoc = time();
$epoc = $epoc - 24 * 60 * 60;   # one day before of current date.

$datestring = localtime($epoc);
print "Yesterday's date and time $datestring\n";

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:

Current date and time Tue Jun  5 05:54:43 2018
Yesterday's date and time Mon Jun  4 05:54:43 2018

POSIX-Funktion strftime ()

Sie können die POSIX-Funktion verwenden strftime()um Datum und Uhrzeit mit Hilfe der folgenden Tabelle zu formatieren. Bitte beachten Sie, dass die mit einem Sternchen (*) gekennzeichneten Bezeichner vom Gebietsschema abhängig sind.

Spezifizierer Ersetzt durch Beispiel
%a Abgekürzter Wochentagsname * Thu
%A Vollständiger Wochentagsname * Thursday
%b Kurzer Monatsname * Aug
%B Vollständiger Monatsname * August
%c Datums- und Uhrzeitdarstellung * Thu Aug 23 14:55:02 2001
%C Jahr geteilt durch 100 und abgeschnitten auf ganze Zahl ( 00-99) 20
%d Tag des Monats, null gepolstert ( 01-31) 23
%D Kurzes MM/DD/YYDatum, entspricht%m/%d/%y 08/23/01
%e Tag des Monats, raumgepolstert ( 1-31) 23
%F Kurzes YYYY-MM-DDDatum, entspricht%Y-%m-%d 2001-08-23
%g Wochenbasiertes Jahr, letzte zwei Ziffern ( 00-99) 01
%G Wochenbasiertes Jahr 2001
%h Abgekürzter Monatsname * (wie %b) Aug
%H Stunde im 24h Format ( 00-23) 14
%I Stunde im 12h Format ( 01-12) 02
%j Tag des Jahres ( 001-366) 235
%m Monat als Dezimalzahl ( 01-12) 08
%M Minute ( 00-59) 55
%n Zeilenumbruch ( '\n')
%p AM- oder PM-Bezeichnung PM
%r 12-Stunden-Uhrzeit * 02:55:02 pm
%R 24-Stunden- HH:MMZeit, entspricht%H:%M 14:55
%S Zweitens ( 00-61) 02
%t Horizontales Tabulatorzeichen ( '\t')
%T ISO 8601 Zeitformat ( HH:MM:SS), entspricht%H:%M:%S 14:55
%u ISO 8601 Wochentag als Nummer mit Montag als 1( 1-7) 4
%U Wochennummer mit dem ersten Sonntag als erstem Tag der ersten Woche ( 00-53) 33
%V ISO 8601 Wochennummer ( 00-53) 34
%w Wochentag als Dezimalzahl mit Sonntag als 0( 0-6) 4
%W Wochennummer mit dem ersten Montag als erstem Tag der ersten Woche ( 00-53) 34
%x Datumsangabe * 08/23/01
%X Zeitdarstellung * 14:55:02
%y Jahr, letzte zwei Ziffern ( 00-99) 01
%Y Jahr 2001
%z

ISO 8601 Versatz von UTC in der Zeitzone (1 Minute = 1, 1 Stunde = 100)

Wenn die Zeitzone nicht angegeben werden kann, keine Zeichen

+100
%Z

Name oder Abkürzung der Zeitzone *

Wenn die Zeitzone nicht angegeben werden kann, keine Zeichen

CDT
%% Ein %Zeichen %

Schauen wir uns das folgende Beispiel an, um die Verwendung zu verstehen:

#!/usr/local/bin/perl
use POSIX qw(strftime);

$datestring = strftime "%a %b %e %H:%M:%S %Y", localtime;
printf("date and time - $datestring\n");

# or for GMT formatted appropriately for your locale:
$datestring = strftime "%a %b %e %H:%M:%S %Y", gmtime;
printf("date and time - $datestring\n");

Wenn der obige Code ausgeführt wird, wird das folgende Ergebnis erzeugt:

date and time - Sat Feb 16 07:10:23 2013
date and time - Sat Feb 16 14:10:23 2013