KW als Spalte einfügen
bearbeitet von plhi @Rolf B
unter Beachtung, daß die 1. KW ins vorherige Jahr gehören könnte, ergibt sich das Array über die darzustellenden Wochen wie folgt:
~~~perl
my @weeks = $fstday->kw == 52 ? (52, 1 .. $lastday->kw) : ($fstday->kw .. $lastday->kw);
~~~
Ansonsten bietet sich über alles ein Template an, der komplette Code:
~~~perl
# Template
my $tt = q(
KW Mo Di Mi Do Fr Sa So
%loop_weeks%
%kw% %1% %2% %3% %4% %5% %6% %7%
%endloop%
);
# Gegeben
my $year = 2015,
my $month = 11;
# Ausführung
my $fstday = Kalenderwoche->new( date => sprintf("%d.%d.%d", 1, $month, $year));
my $lastday = Kalenderwoche->new( date => sprintf("%d.%d.%d", $fstday->ultimo, $month, $year));
# Daten fürs Template bereitstellen
my @stash = ();
my @weeks = $fstday->kw == 52 ? (52, 1 .. $lastday->kw) : ($fstday->kw .. $lastday->kw);
foreach my $week( @weeks ){
my %modimi = ();
foreach my $wd(1..7){
if( $wd == $fstday->wd && $fstday->month == $month){
$modimi{$wd} = sprintf("%02d", $fstday->day);
$fstday++;
}
else{
$modimi{$wd} = '--';
}
}
push @stash, {kw => sprintf("%02d", $week), %modimi};
}
# Daten ins Template rendern
print XR::xr($tt, {weeks => \@stash});
KW Mo Di Mi Do Fr Sa So
44 -- -- -- -- -- -- 01
45 02 03 04 05 06 07 08
46 09 10 11 12 13 14 15
47 16 17 18 19 20 21 22
48 23 24 25 26 27 28 29
49 30 -- -- -- -- -- --
~~~
Und genauso kann man das natürlich auch mit PHP machen. So ist die Datumsarithmetik schön getrennt von der Darstellung. Es wäre dann nur das Template zu ändern bzw. anzupassen.
MfG
KW als Spalte einfügen
bearbeitet von plhi @Rolf B
unter Beachtung, daß die 1. KW ins vorherige Jahr gehören könnte, ergibt sich das Array über die darzustellenden Wochen wie folgt:
~~~perl
my @weeks = $fstday->kw == 52 ? (52, 1 .. $lastday->kw) : ($fstday->kw .. $lastday->kw);
~~~
Ansonsten bietet sich über alles ein Template an, der komplette Code:
~~~perl
# Template
my $tt = q(
KW Mo Di Mi Do Fr Sa So
%loop_weeks%
%kw% %1% %2% %3% %4% %5% %6% %7%
%endloop%
);
# Gegeben
my $year = 2015,
my $month = 11;
# Ausführung
my $fstday = Kalenderwoche->new( date => sprintf("%d.%d.%d", 1, $month, $year));
my $lastday = Kalenderwoche->new( date => sprintf("%d.%d.%d", $fstday->ultimo, $month, $year));
# Daten fürs Template bereitstellen
my @stash = ();
my @weeks = $fstday->kw == 52 ? (52, 1 .. $lastday->kw) : ($fstday->kw .. $lastday->kw);
foreach my $week( @weeks ){
my %modimi = ();
foreach my $wd(1..7){
if( $wd == $fstday->wd && $fstday->month == $month){
$modimi{$wd} = sprintf("%02d", $fstday->day);
$fstday++;
}
else{
$modimi{$wd} = '--';
}
}
push @stash, {kw => sprintf("%02d", $week), %modimi};
}
# Daten ins Template rendern
print XR::xr($tt, {weeks => \@stash});
KW Mo Di Mi Do Fr Sa So
44 -- -- -- -- -- -- 01
45 02 03 04 05 06 07 08
46 09 10 11 12 13 14 15
47 16 17 18 19 20 21 22
48 23 24 25 26 27 28 29
49 30 -- -- -- -- -- --
~~~
Und genauso kann man das natürlich auch mit PHP machen. So ist die Datumsarithmetik schön getrennt von der Darstellung.
MfG