Week berekenen aan de hand van de datum van vandaag

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jeroen Langenberg

Jeroen Langenberg

03/06/2007 12:58:00
Quote Anchor link
Beste mensen,

Ik ben bezig met een systeem dat de netjes de dagen van maandag t/m zondag onder elkaar moet lijsten. Dus, als het vandaag maandag is, dat de data's van dinsdag,woensdag,donderdag,vrijdag,zaterdag,zondag berekend worden. Is het vandaag dinsdag, dan moet maandag,woensdag,donderdag,vrijdag,zaterdag,zondag berekend worden...

Iemand die daarmee kan helpen..?

Bedankt,

Jeroen

EDIT:

Scenarioschets:

Het is vandaag zondag, aan de hand daarvan moet Maandag berekend worden, maar ook dinsdag,woensdag,donderdag,vrijdag,zaterdag. Zondag hebben we al, dus die hoeft niet.

Ik zou dit kunnen doen d.m.v. +1 en -1 etc. Maar dat lijkt me niet de netste methode...
Gewijzigd op 01/01/1970 01:00:00 door Jeroen Langenberg
 
PHP hulp

PHP hulp

01/11/2024 01:03:48
 
Hipska BE

Hipska BE

03/06/2007 13:08:00
Quote Anchor link
Volgens mij moet je hier even wat rondneuzen, en wat puzzelen welke functies jij nodig hebt:
PHP datum en tijd functies
 
Bart van der veen

bart van der veen

03/06/2007 14:04:00
Quote Anchor link
wat je zou kunnen doen, is php ff laten opzoeken wat het weeknummer van deze week is. en vervolgens die week laten uitschrijven van zondag t/m zaterdag. en dat de datum van vandaag ff highlighten...

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
<?php
$week
=array(Sun=>6,Mon=>1,Tue=>1,Wed=>1,Thu=>1,Fri=>1,Sat=>1); //geen idee waarom alleen zondag 6 is??
$offset=ABS(date("w")-$week[date("D")]);
$laatstemaandag=date("d m Y",strtotime ("-".$offset." day"));
for($i=0;$i<=6;$i++){
    $verschil=$i-$offset;
    if($verschil<0){ //php kan niet +-
        $date=strtotime ($verschil." day");
    }
else{
        $date=strtotime ("+".$verschil." day");
    }

    if(date("D")==Date("D",$date)){
        echo'<b>'.Date("D d m Y",$date).'</b><br>';
    }
else{
        echo Date("D d m Y",$date).'<br>';    
    }    
}

?>
Gewijzigd op 01/01/1970 01:00:00 door bart van der veen
 
Joren de Wit

Joren de Wit

03/06/2007 14:53:00
Quote Anchor link
Het is vrij eenvoudig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
for($i = 1; $i < 7; $i++)
{

    echo date('l', mktime(0,0,0,date('n'),date('d')+$i,date('Y'))).'<br>';
}

?>


ps. Nu heb ze natuurlijk wel in het engels, maar daar kun je zelf weer even een functie voor schrijven om dat op te lossen.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
 
Hipska BE

Hipska BE

03/06/2007 15:42:00
Quote Anchor link
@blanche: wat ga jij doen als de dag van vandaag 30 is? dan berekent uw script dagen 30 tot 37 van deze maand ... :-S
 
Joren de Wit

Joren de Wit

03/06/2007 15:50:00
Quote Anchor link
Nope, dat is niet waar. De functie mktime() ondervangt dat probleem aangezien er met een timestamp gewerkt wordt.

Draai volgend scriptje maar eens, dan zie je dat het werkt:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
for($i = 1; $i < 7; $i++)
{

    echo date('d-m-Y', mktime(0,0,0,6,28+$i,2007)).'<br>';
}

?>
 
Bart van der veen

bart van der veen

03/06/2007 16:14:00
Quote Anchor link
@blance, de vraag was om alle weken op maandag te laten beginnen...
 
Joren de Wit

Joren de Wit

03/06/2007 16:33:00
Quote Anchor link
Oeps niet helemaal goed gelezen. Maar dan zou het zoiets worden:
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
<?php
$time
= strtotime('last monday');
$weekday = date('N');

for($i = 0; $i < 7; $i++)
{

    $current = $i + 1;
    
    if($current != $weekday)
    {

        echo date('l', mktime(0, 0, 0, date('n', $time), date('d', $time)+$i, date('Y', $time))).'<br>';
    }
}

?>
 



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.