datum van eerste week van de maand
Ik ben aan het zoeken hoe je het voor elkaar krijgt dat je uit de eerste week van de maand de datum van de zondag te pakken krijgt.
In dit geval is het Februari, de eerste week van februari is week 5, dit tot nu toe kan ik met een script voor elkaar krijgen.
Dat de eerste dag van week 5 (een zondag) 02-01-2009 (mm-dd-yyyy) is, dat kan ik nog niet via een script te pakken krijgen (overigens komt het nu toevallig uit dat de eerste dag van eerste week van de maand 1 februari is, maar bij veel andere maanden is de eerste dag van de eerste week van die maand een dag in de maand daar voor, bijvoorbeeld de 29ste, 30ste of 31ste).
Tot nu toe heb ik dit:
Code (php)
Ik heb dus tot nu toe totaal niks er in staan over het pakken van de eerste dag van de eerste week van de maand. Dit omdat ik gewoon puur niet weet hoe ik verder moet. Dit hierboven is gewoon eigenlijk een scriptje om te zoeken wat de eerste week van de maand is.
Nu verder naar de eerste dag van de week van de maand, weet iemand hoe verder??
Alvast bedankt,
Chris
date('w', .....) geeft de dag van de week.
Edit:
Zondag 1-2-2009 ligt in week 5
Maandag 2-2-2009 ligt in week 6
Zie ook eens hier.
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Code (php)
Daar begrijp ik het even niet.
Nou doe ik het voor dit jaar hé, de eerste maandag van die jaar is 5 januari, klopt precies, geeft het script ook aan. Maar 5 januari valt in week 2.
Dit stukje hierboven zegt dat als het weeknummer niet 1 is (!=) dan zit je in het jaar er voor maar eigenlijk zitten we gewoon een week verder...
[Edit: Nu ik er over nadenk, ik kan hier toch gewoon dat tijdgetal gemaakt door mktime() min 7 dagen doen en dan heb ik de maandag van de eerste week van het jaar?]
Daarna staat er een stukje '# Eerste dag van de week' (hebben we dat net al niet gedaan, alhoewel dat de eerste dag van week 2 was?). Daar begrijp ik het stukje "date('d', $iFirstWeek) + 7*($iWeek-1)" niet echt van, misschien dat je me dat uit kunt leggen San?
P.S. Wat betekend het % teken in de formule die je gebruikt om de eerste maandag van het jaar uit te rekenen? Het werkt wel maar ik begrijp nog niet echt wat hij doet en heb nog geen lijst kunnen vinden met alle tekens, zoals *, /, +, etc...
Gewijzigd op 01/01/1970 01:00:00 door Chris
Code (php)
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
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
<?php
# Het volgende zoekt uit welke week
# de eerste week van de maand is:
$maand = date("m");
$jaar = date("Y");
$date = mktime(0, 0, 0, $maand, 01, $jaar);
$week = (int)date('W', $date);
# Het volgende zoekt een maandag op:
$firstDay = date('w',mktime(0,0,0,$maand,1,$jaar));
if ($firstDay == 0) { $firstDay = 7; }
$iFirstWeek = mktime(0,0,0,$maand,1 + ((8-$firstDay)%7), $jaar);
# Het volgende selecteerd de week waar
# die maandag in ligt met daarna het
# verschil in weken:
$weekmaandag = (int)date('W', $iFirstWeek);
if($weekmaandag != $week){
$aantalweken = $weekmaandag - $week;
} else {
$aantalweken = 0;
}
# Rekent de datum uit van de eerste maandag van de eerste week van de maand:
$maandag = $iFirstWeek - ($aantalweken*7*24*60*60);
echo date('m', $maandag).'-'.date('d', $maandag).'-'.date('Y', $maandag);
?>
# Het volgende zoekt uit welke week
# de eerste week van de maand is:
$maand = date("m");
$jaar = date("Y");
$date = mktime(0, 0, 0, $maand, 01, $jaar);
$week = (int)date('W', $date);
# Het volgende zoekt een maandag op:
$firstDay = date('w',mktime(0,0,0,$maand,1,$jaar));
if ($firstDay == 0) { $firstDay = 7; }
$iFirstWeek = mktime(0,0,0,$maand,1 + ((8-$firstDay)%7), $jaar);
# Het volgende selecteerd de week waar
# die maandag in ligt met daarna het
# verschil in weken:
$weekmaandag = (int)date('W', $iFirstWeek);
if($weekmaandag != $week){
$aantalweken = $weekmaandag - $week;
} else {
$aantalweken = 0;
}
# Rekent de datum uit van de eerste maandag van de eerste week van de maand:
$maandag = $iFirstWeek - ($aantalweken*7*24*60*60);
echo date('m', $maandag).'-'.date('d', $maandag).'-'.date('Y', $maandag);
?>