|
|
|
| /* Deutsche Ausgabe */ |
| « Möchtegern 2-Faktor-Authentifizierung | Zahl die Raten, Bill! » |
Berechnungen mit Datum und Zeit sind nicht einfach. Wenn man nicht gerade metrische Zeiteinheiten benutzt, muss man einiges beachten. 60 Sekunden pro Minute. 24 Stunden pro Tag. 30, 31, 28 oder manchmal 29 Tage pro Monat. 52,irgendwas Wochen pro Jahr. Es ist einfach nicht mehr schön.
Zum Glück bietet fast jede Programmiersprache eine vorgefertigte Funktion an, die dem Programmierer die ganze Arbeit abnehmen. Natürlich gibt es auch "besondere" Programmierer, die die Bibliotheksfunktion einfach ignorieren und ihre eigene Funktion entwickeln. Wie zum Beispiel Yuris Vorgänger. Seine Aufgabe war eigentlich trivial: mit Hilfe von Perl 19 Sekunden zur aktuellen Zeit zu addieren.
my @datum = gmtime(time);
my $jahr = $datum[5]+1900;
my $monat = $datum[4]+1;
my $tag = $datum[3];
my $std = $datum[2]+4;
my $min = $datum[1];
my $sek = $datum[0];
if ($sek < 41){$sek = $sek + 19;}
else{
$sek = $sek + 19 - 60;
if ($min < 59){$min++;}
else{
$min = 0;
if ($std < 23){$std++;}
else{
$std = 0;
if ($monat < 8){
if (($monat%2)!= 0){
if ($tag < 31){$tag++;}
else{$tag = 1;$monat++;}
}
else{
if ($monat == 2){
if (($jahr == 2008)||($jahr == 2012)){
if ($tag < 29){$tag++;}
else{$tag = 1;$monat = 3;}
}
else{
if ($tag < 28){$tag++;}
else{$tag = 1;$monat = 3;}
}
}
elsif ($tag < 30){$tag++;}
elsif ($tag == 30){$tag = 1;$monat++;}
}
}
elsif ($monat < 12){
if (($monat%2) == 0){
if ($tag < 31){$tag++;}
else{$tag = 1;$monat++;}
}
else{
if ($tag < 30){$tag++;}
else {$tag = 1;$monat++;
}
}
}
elsif ($monat == 12){$tag = 1;$monat = 1;$jahr++;}
}
}
}
Interessanterweise verwendete er sogar die gmtime-Biblothek, aber nur, um das aktuelle Datum und die Zeit (das von der Perl-Funktion "time" als Zahl der Millisekunden seit dem 1. Januar 1970 um Mitternacht zurückgegeben wird) in Jahr, Monat, Tag, Stunde, Minute und Sekunde zu teilen. Yuri ersetzte diese Funktion mit seinem eigenen Code:
my @datum = gmtime(time + 19);
(Übersetzt von Andreas Moser)
| « Möchtegern 2-Faktor-Authentifizierung | Zahl die Raten, Bill! » |