datum van eerste week van de maand

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris

Chris

14/02/2009 00:02:00
Quote Anchor link
De titel zegt het al half.
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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$maand
= date("m");
$jaar = date("Y");

$date = mktime(0, 0, 0, $maand, 01, $jaar);
$week = (int)date('W', $date);

echo $week;
?>


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
 
PHP hulp

PHP hulp

22/12/2024 12:16:28
 
- SanThe -

- SanThe -

14/02/2009 00:13:00
Quote Anchor link
Eerste dag van de week is bij mij maandag. Maar ok.
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 -
 
Chris

Chris

14/02/2009 11:14:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

# Als het niet week 1 is, zitten we in het jaar ervoor
    if (date("W", $iFirstWeek) != 1) { $iWeek--; }
    
    # Eerste dag van de week
    $eerste = mktime(0, 0, 0, date('m', $iFirstWeek), date('d', $iFirstWeek) + 7*($iWeek-1), date('Y', $iFirstWeek));

?>


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
 
Chris

Chris

14/02/2009 20:02:00
Quote Anchor link
Zo, ik ben er helemaal uit, zie hier wat het is geworden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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);
?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.