Hallo Leute,
ich suche nach einer *schönen* Lösung, um die Differenz (in Tagen) zwischen zwei Datumswerten zu berechnen. Inklusive Schaltjahresproblematik und dem ganzen Zeug, jaja.
Meine Datumswerte liegen im Format DDMMYYYY vor.
Ich habe in der ActivePerl-Doku einen Modul HTTP::Date gefunden (auf die Idee wäre ich ohne Volltextsuche *nie* gekommen), mit dem ich das nach entsprechender Umformatierung meines Datums nach YYYYMMDD und dann nach "seconds since epoch" hingekriegt habe.
Es kommt mir aber ein wenig von hinten durch die Brust ins Auge vor ... und mich für eine Datums-Funktion von einem HTTP-Modul abhängig zu machen, igitt ...
Wie würdet Ihr das machen? Hat vielleicht jemand eine elegantere Lösung zur Hand?
sub age ($)
{
# Parameter zuweisen
my ($datum) = @_;
# Aktuelles Datum holen
my $heute = $today::value;
# Beide Werte umsetzen von DDMMYYYY nach YYYYMMDD
my $datum_YYYYMMDD = substr ($datum, 4, 4) . substr ($datum, 2, 2) . substr ($datum, 0, 2);
my $heute_YYYYMMDD = substr ($heute, 4, 4) . substr ($heute, 2, 2) . substr ($heute, 0, 2);
# Beide Werte umsetzen von YYYYMMDD in "seconds since epoch"
my $datum_ticks = HTTP::Date::str2time ($datum_YYYYMMDD);
my $heute_ticks = HTTP::Date::str2time ($heute_YYYYMMDD);
# Jetzt die Differenz in Sekunden berechnen
my $differenz = $heute_ticks - $datum_ticks;
# dann diese durch die Sekundenzahl eines Tages teilen
my $tag = 60 * 60 * 24;
my $ganze_tage = ($differenz - ($differenz % $tag)) / $tag;
# und zuletzt das Ergebnis dem Aufrufer zurückliefern
return $ganze_tage;
}