kalenderwoche anzeigen
Jasmin
- perl
Hallo
kann ein cgi die jetzige Kalenderwoche anzeigen?
Vielen Dank schon im Voraus für den code
jasmin
Hi,
sub gib_kalenderwoche {
my @startdatum = (1,1,$_[2]);
my $wochentag = gib_wochentag(@startdatum);
if ($wochentag > 3) {
$startdatum[0] += (7 - $wochentag);
}
return int((datum_differenz($_[0],$_[1],$_[2],@startdatum) / 7))+1;
}
sub gib_wochentag {
if ($_[2] < 1999) {
return ((datum_differenz(@_,29,12,1997) % 7));
}
elsif ($_[2] < 2000) {
return ((datum_differenz(@_,28,12,1998) % 7));
}
elsif ($_[2] < 2001) {
return ((datum_differenz(@_,27,12,1999) % 7));
}
else {
return ((datum_differenz(@_,25,12,2000) % 7));
}
} # gib_wochentag
sub datum_differenz {
my @akt_datum = ($_[3],$_[4],$_[5]);
my $tage = 0;
while (datum_kleiner(@akt_datum, $_[0], $_[1], $_[2])) {
@akt_datum = increase_date (@akt_datum);
$tage++;
}
return $tage;
} # datum_differenz
sub datum_kleiner {
if (($_[2]*10000 + $_[1]*100 + $_[0]) < ($_[5]*10000 + $_[4]*100 + $_[3])) {
return 1;
}
else {
return 0;
}
} # datum_kleiner
sub increase_date {
my @akt_datum = @_;
$akt_datum[0]++;
if ($akt_datum[0] > gib_tage_pro_monat($akt_datum[1],$akt_datum[2])) {
$akt_datum[0] = 1;
$akt_datum[1]++;
} # Monat hochzaehlen
if ($akt_datum[1] > 12) {
$akt_datum[1] = 1;
$akt_datum[2]++;
} # Jahr hochzaehlen
return @akt_datum;
} # increase_date
sub gib_tage_pro_monat {
my @tage_pro_monat = (0,31,28,31,30,31,30,31,31,30,31,30,31);
if (($_[1] % 4) == 0) {
$tage_pro_monat[2] = 29;
if (($_[1] % 100) == 0) {
$tage_pro_monat[2] = 28;
if (($_[1] % 400) == 0) {
$tage_pro_monat[2] = 29;
} # if
} # if
} # if
return $tage_pro_monat[$_[0]];
} # gib_tage_pro_monat
Mit gib_kalenderwoche([Tag],[Monat],[Jahr]) sollte das (hoffentlich) funktionieren...
Ciao
Andreas
Hallo
kann ein cgi die jetzige Kalenderwoche anzeigen?
DIN1355 hab ich in PERL mal implementiert und für die Nachwelt aufgeschrieben: http://perlbase.xwolf.de/cgi-bin/perlbase.cgi?display=6&id=7
/Rolf