Ik heb de volgende "smarty-code"
Ik verhoog de section telkens met 86400 seconden dus een dag. Op deze manier kan ik heel mooi een kalendertje weergeven met als eerste rij de dagnummers en als eerste kolom de weeknummers. De enige input die het nodig heeft is een unix timestamp begindatum en einddatum.
Als het dagnummer gelijk is aan 0, dan is het zondag en sluit ik de rij af met een </tr> Dit gaat overal goed behalve bij 30 oktober 2005
Hier gebeurd het volgende:
29 oktober
dagnummer 6
timestamp 1130536800
30 oktober
dagnummer 0
timestamp 1130623200
nu volgt een tr omdat het dagnummer 0 is
30 oktober (????)
dagnummer 0 (????)
timestamp 1130709600
Hij zet hier dus geen weeknummer voor omdat het dagnummer 0 is. timestamp wordt wel met een dag verhoogt.
Nu volgt weer een tr omdat het dagnummer 0 is.
Weeknummer 44
31oktober
dagnummer 1
timestamp 1130796000
En dan gaat hij gewoon goed verder.
Zoals je ziet hebben 30 en 31 oktober dezelfde timestamp. Vaag niet? Dit is ook de enige datum waar dit verkeerd gaat. Is hier wat raars aan de hand? Bug in PHP? Of afrondingsfout met seconden?
Ik hoop dat iemand licht in deze vage materie kan brengen.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
| <table class="agenda" cellpadding="0" cellspacing="0" width="100%"> <tr class="agenda_dagnamen"> <td> </td> <td>Ma</td> <td>Di</td> <td>Wo</td> <td>Do</td> <td>Vr</td> <td>Za</td> <td>Zo</td> </tr> {# section name=dagloop start=$agenda_begindatum_timestamp loop=$agenda_einddatum_timestamp step=86400 #} {# if $smarty.section.dagloop.index|date_format:"%w" == 1 #} <tr valign="top" class="{# cycle values="agenda_row_odd,agenda_row_even" #}"> <td class="agenda_weeknummer"> <table cellpadding="0" cellspacing="0" border="0" width="100%" class="tekstmain11px"> <tr> <td align="center">{# $smarty.section.dagloop.index|date_format:"%W" #}</td> </tr> <tr> <td align="center"></td> </tr> <tr> <td align="center"></td> </tr> </table> {#/if#} <td align="center" height="15">{# $smarty.section.dagloop.index|date_format:"%d" #}-{#$smarty.section.dagloop.index|date_format:"%w"#}<br />{#$smarty.section.dagloop.index#}</td> {#if $smarty.section.dagloop.index|date_format:"%w" == 0 #} </tr> {# /if #} {# /section #} </table> |
Ik verhoog de section telkens met 86400 seconden dus een dag. Op deze manier kan ik heel mooi een kalendertje weergeven met als eerste rij de dagnummers en als eerste kolom de weeknummers. De enige input die het nodig heeft is een unix timestamp begindatum en einddatum.
Als het dagnummer gelijk is aan 0, dan is het zondag en sluit ik de rij af met een </tr> Dit gaat overal goed behalve bij 30 oktober 2005
Hier gebeurd het volgende:
29 oktober
dagnummer 6
timestamp 1130536800
30 oktober
dagnummer 0
timestamp 1130623200
nu volgt een tr omdat het dagnummer 0 is
30 oktober (????)
dagnummer 0 (????)
timestamp 1130709600
Hij zet hier dus geen weeknummer voor omdat het dagnummer 0 is. timestamp wordt wel met een dag verhoogt.
Nu volgt weer een tr omdat het dagnummer 0 is.
Weeknummer 44
31oktober
dagnummer 1
timestamp 1130796000
En dan gaat hij gewoon goed verder.
Zoals je ziet hebben 30 en 31 oktober dezelfde timestamp. Vaag niet? Dit is ook de enige datum waar dit verkeerd gaat. Is hier wat raars aan de hand? Bug in PHP? Of afrondingsfout met seconden?
Ik hoop dat iemand licht in deze vage materie kan brengen.