Toon posts:

[PHP] 31 Maart 2002 Probleem! *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een agenda die meestal 7 a 8 dagen laat zien. Echter doet ie nu iets raars met 31 Maart. Als ik de volgende code gebruikt :
<? $i = 1;
while ($i<10)
{ $datum = mktime(0,0,0,04,$i,2002);
print date('d-m-Y',$datum)." - ";
print $datum." - ";
$datum = $datum - (4*86400);
print date('d-m-Y',$datum)."<BR>";
$i++;
}
?>

Krijg ik als uitvoer :
01-04-2002 - 1017612000 - 27-03-2002
02-04-2002 - 1017698400 - 28-03-2002
03-04-2002 - 1017784800 - 29-03-2002
04-04-2002 - 1017871200 - 30-03-2002
05-04-2002 - 1017957600 - 01-04-2002
06-04-2002 - 1018044000 - 02-04-2002
07-04-2002 - 1018130400 - 03-04-2002
08-04-2002 - 1018216800 - 04-04-2002
09-04-2002 - 1018303200 - 05-04-2002

Dit klopt dus niet, hij laat 31 Maart weg en 1 April - 4 dagen is 28 Maart en niet 27 zoals hierboven staat. Als je dus iets van 1 April 2002 afhaalt vergeet ie 31 Maart mee te tellen. Als ik het jaar echter op 2001 zet dan klopt alles wel. Het lijkt er dus op dat 31 Maart 2002 niet bestaat. Ik heb dit geprobeert met Omnihttp en op internet op een server en beide hebben het probleem.

Weet iemand hier een oplossing/reden voor. Mijn agendatje gaat zo in de stress.

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

Ik zit nou al een poosje te staren naar je code, maar ik snap niet wat er mis gaat..

Overigens ligt 27 maart ook geen 4 dagen maar 5 dagen voor 1 April. Ik zie niet in waarom dit misgaat, en ik vind het volgens mij net zo frustrerend als jij.

[edit]
$datum = $datum - (4*86400);
veranderen in
$datum = $datum - (4*86400) - 1;
helpt!
Is er een of andere vage reden dat 31 maart toevallig een dag van 86401 seconde is?

|_____vakje______|


  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
De reden is de zomertijd. Zoals je met dit stukje code kan zien :Y).
code:
1
2
3
4
5
6
7
8
9
10
$i = 30;                   
while ($i<40)               
{ $datum = mktime(0,0,0,03,$i,2002); 
print date('d-m-Y H:i:s',$datum)." - ";
$datum = $datum - (4*86400);
print date('d-m-Y H:i:s',$datum)." - ";
$datum = $datum + (4*86400);
print date('d-m-Y H:i:s',$datum)."<BR>";
$i++;
}

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Print naast de dag ook eens de tijd erbij (op de seconde nauwkeurig)?

edit:
Laat ook maar.. Ik ben alweer te laat :)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

Op woensdag 27 maart 2002 22:13 schreef Sjaaky het volgende:
De reden is de zomertijd.
[..]
Waaah.. Natuurlijk.. Ik kon het ookal niet hebben dat het niet klopte.. :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
Maar hoe lost ik dit nu goed werkend op, zodat het volgend jaar ook goed blijft gaan.

Ik heb bv iets wat op maandag 1 april dus voorkomt
en 4 dagen ervoor (28 maart) ook.

als ik deze nu invoer dan kom ie dus op 1 april en 27 maart.

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
code:
1
2
3
4
5
    $datum = mktime(0,0,0,04,$i,2000); 
    print date('d-m-Y H:i:s',$datum)." - ";

    $datum = mktime(0,0,0,04,$i-4,2000); 
    print date('d-m-Y H:i:s',$datum)."<BR>";

  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 08-09 20:35

CyberSnooP

^^^^ schrijft --->

[hk-mode]
Ah.. nee, niet nou al zomertijd. Ik vind het net tof dat het zo vroeg licht is!
[/hk-mode]

|_____vakje______|


  • TweakersOnly
  • Registratie: September 2000
  • Laatst online: 01:38
Met ASP heb ik hetzelfde probleem gehad. Echter via een slimmigheidje zomer- en wintertijd weten te negeren.
Ik tel bij een dag er 30 uur op, zodat ik normaal gesproken op 6 uur 's morgens van de volgende dag zit. Daarna zet ik met SetHour(0) de tijd weer op 0:00, zodat ik altijd de tijd om middernacht heb.
Pagina: 1