Mit Hilfe des Operators "time" kann man jederzeit die aktuelle Systemzeit.
Der Operator liefert
die Sekunden seit 00:00:00 1.1.1970 GMT zurück. Um diese wieder umzurechnen stehen die
Funktionen "localtime" bzw. "gmtime" zur Verfügung. Ein Aufruf schaut in Perl wie
folgt aus:
($sec, $min, $std, $tag, $mon, $jahr, $wochentag, $tagDesJahres,
$zeitentf) =
localtime(time);
Dabei gilt aber, dass
Ein Zugriff kann wie folgt erfolgen:
print "heute ist der ",localtime(time)[7],".
Tag des Jahres ".localtime(time)[5]+1900."\n";
Wenn man mehrere Werte parallel zuweisen möchte, geht das wie folgt:
($stunde, $monat, $wtag) = localtime[2,4,6];
Wenn man ein Datum in "Epochensekunden" umrechnen will, muss man ein zusätzliches
Perl-
Modul laden:
use
Time::Local;
damit stehen die Funktionen "timelocal()" und "timegmt()" zur
Verfügung:
$epochensec=timelocal($sek,
$min, $std, $tag, $monat, $jahr);
#
Achtung: an $monat-1 und $jahr-1900 denken!
Wenn ein Datum aus einem Webserverlog umgerechnet werden soll, kann dies wie folgt
erfolgen:
#!/usr/bin/perl
use Time::Local;
$datestring= "[07/Aug/2003:15:01:28 +0200]";
%mnr=('Jan', 1, 'Feb', 2, 'Mar', 3, 'Apr', 4, 'Mai', 5, 'Jun', 6, 'Jul',
7, 'Aug', 8, 'Sep', 9, 'Oct', 10, 'Nov',
11, 'Dec', 12);
@wday=('So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa');
($tag, $monatstr, $jahr, $stunde, $minute, $sekunde) =
( $datestring =~ m|\[(\d+)/(\w+)/(\d+):(\d+):(\d+):(\d+)
[+-]\d+]| );
$monat=$mnr{$monatstr};
print "$tag.$monat.$jahr - $stunde:$minute:$sekunde ";
$monat-=1;
$jahr-=1900;
$epoch=timelocal($sekunde, $minute, $stunde, $tag, $monat, $jahr);
print " - $epoch - ";
($s, $m, $h, $d, $mn, $j, $wd) = (localtime($epoch))[0..6];
$mn++;
$j+=1900;
$wdstring=$wday[$wd];
print "$wdstring $d.$mn.$j - $h:$m:$s \n";