Eerste dag van de week

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Slewey

Slewey

14/05/2007 14:28:00
Quote Anchor link
Hallo,

Ik ben bezig om een weekoverzicht te maken, eerste dag van de week zondag, laatste dag zaterdag.
Maar nou wil ik de datums erbij zetten.
Dus het overzicht van deze week zou dan beginnen bij Zondag 13 Mei 2007 en eindigen op Zaterdag 19 Mei 2007.

Hoe zou ik de eerste dag van de week kunnen ophalen?

alvast bedankt!
 
PHP hulp

PHP hulp

20/11/2024 09:51:59
 
Jan Koehoorn

Jan Koehoorn

14/05/2007 14:55:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    setlocale(LC_ALL, 'nl_NL');
    $timestamp = time ();
    while (strftime ('%u', $timestamp) != 7) {
        $timestamp -= (24 * 3600);
    }

    echo 'De eerste zondag van deze week is: ' . strftime ('%d %B %Y', $timestamp);
?>
 
Jacco Engel

Jacco Engel

14/05/2007 14:58:00
Quote Anchor link
date(w) ;
Resultaat *24*60*60
Timestamp van nu - bovenstaand
date(d-m-Y,bovenstaand)


Beetje abstract maar moet lukken toch :)?
 
Arjan Kapteijn

Arjan Kapteijn

14/05/2007 14:58:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$eerstedag
= date('w', mktime(0,0,0,$maand,1,$jaar));
?>


Huh? Snap de vraag niet helemaal.
 
Slewey

Slewey

14/05/2007 15:14:00
Quote Anchor link
Bedankt voor de reacties;

@Jan;
ik krijg daarbij:
Fatal error: Maximum execution time of 60 seconds exceeded

@Arjan;
Daarmee bereken je de eerste dag van de maand, maar niet de eerste (zon)dag van de week.
 
Jan Koehoorn

Jan Koehoorn

14/05/2007 15:17:00
Quote Anchor link
Slewey schreef op 14.05.2007 15:14:
Bedankt voor de reacties;
@Jan;
ik krijg daarbij:
Fatal error: Maximum execution time of 60 seconds exceeded

Oh? Vreemd, bij mij deed hij het prima. Probeer eens een ander getal dan 7?
 
Jacco Engel

Jacco Engel

14/05/2007 15:19:00
Quote Anchor link
Domme brainstorm :
phpversie?
 
Slewey

Slewey

14/05/2007 15:22:00
Quote Anchor link
@Jan; met andere getallen, 4 en 1 hetzelfde probleem.

@Jacco; PHP Version 5.1.4
 
Martin Meijer

Martin Meijer

14/05/2007 15:27:00
Quote Anchor link
Ik heb toevallig laatst een rooster moeten maken, en heb ik dit ook moeten doen.

(Hij begint vanaf maandag en niet vanaf zondag, maar dat is makkelijk aan te passen, ik heb dit reeds aangepast voor jou zodat het overzicht op zondag begint!)

Ik hoo pdat je wat hebt aan mijn code, de eerste is een function die de week bepaalt:

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
29
30
31
32
33
34
<?PHP
function week_limits($weeknummer, $jaar)
       {

           // begin datetime
           $time = mktime(1, 1, 1, 1, 1, $jaar);            
           // Aassuring that $weeknummer is number
           $weeknummer--;
           // Als de eerste dag van de week niet start met zondag, date() zal "niet correct" resulteren (in dit geval de week is 0)
           if (date('w', $time) == 1)
               $weeknummer++;
           $start_time = false;
           $end_time = false;
          
           for ($day = 1; $day <= 380; $day++)
           {

               if (date('W', $time) == $weeknummer && !$start_time)
                   $start_time = $time-24*60*60; // Start dag van de week
                   $day2 = $start_time+24*60*60;
                   $day3 = $day2+24*60*60;
                   $day4 = $day3+24*60*60;
                   $day5 = $day4+24*60*60;
                   $day6 = $day5+24*60*60;
               if (date('W', $time - 24*60*60) == $weeknummer && !$end_time && date('W', $time) != $weeknummer)
                   $end_time = $time - 24*60*60 - 24*60*60;  // Einde dag van de week      
                    
               if ($start_time && $end_time)
                   break;    
               $time += 24*60*60;
              
           }

          
           return array($start_time, $day2, $day3, $day4, $day5, $day6, $end_time);
       }
//week_limits()
?>


Je roept het als volgt aan (Laat een weten als er een fout is):

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
<table width="800" border="1">
  <tr>
          <td>&nbsp;</td>
<?PHP
$weeknummer
    =    date(W); // Huidig weeknummer
$jaar        =    date(Y); // Huidig jaar
$array        =    week_limits($weeknummer, $jaar); // Array met de huidige week datum

foreach($array as $key => $datum) { // Zorgt dat de datum van de huidige week in de top row geplaatst word

echo "<td><div align=\"center\"><B>".date("l",$datum)."<br /></B>".date("d-m-Y",$datum)."<br /></div></td>";

    }

?>

  </tr>
<?PHP
for ($i = 0; $i <= 23; $i++) { // Verzorgt de uren links naast het rooster
?>

  <tr>
    <td><?php echo $i; ?>:00 - <?php echo $i+1; ?>:00 </td>
    <?PHP
    $array1
        =    week_limits1($weeknummer, $jaar); // Array met de huidige week datum

    foreach($array1 as $key1 => $datum1) { // Zorgt dat de datum van de huidige week in de top row geplaatst word
    
    // Datum in nederlands notatie    

    $datum_nl    =    date("d-m-Y",$datum1);
    
    // Dag van de week    
    $dvdw        =    date("l",$datum1);
    
    // Datum uitelkaar halen om te kunnen verkegelijken
    list($day, $month, $year) =    split("-",$datum_nl);    
    
        if($day    == 01) {
                $day = 1;
                }

            elseif($day == "02") {
                $day = 2;
                }

            elseif($day == "03") {
                $day = 3;
                }

            elseif($day == "04") {
                $day = 4;
                }

            elseif($day == "05") {
                $day = 5;
                }

            elseif($day == "06") {
                $day = 6;
                }

            elseif($day == "07") {
                $day = 7;
                }

            elseif($day == "08") {
                $day = 8;
                }

            elseif($day == "09") {
                $day = 9;
                }

                
        if($month == "01") {
            $month = 1;
            }

            elseif($month == "02") {
                $month = 2;
                }

            elseif($month == "03") {
                $month = 3;
                }

            elseif($month == "04") {
                $month = 4;
                }

            elseif($month == "05") {
                $month = 5;
                }

            elseif($month == "06") {
                $month = 6;
                }

            elseif($month == "07") {
                $month = 7;
                }

            elseif($month == "08") {
                $month = 8;
                }

            elseif($month == "09") {
                $month = 9;
            }

    
        // Anders moet je krijgen te zien dat deze vrij is
        echo "<td bgcolor=\"#66FF00\"><div align=\"center\">Hier eventueel wat je wil</div></td>";
}

    ?>

  </tr>
<?PHP
}
?>

</table>


Ik heb het wel getest en het laat een complete weekoverzicht zien met de uren van de dag.

succes ermee!
Gewijzigd op 01/01/1970 01:00:00 door Martin Meijer
 
Slewey

Slewey

14/05/2007 17:29:00
Quote Anchor link
Iemand nog ideeën?
Op dit moment doe ik het door de de dag van vandaag - de dag van de week
Vandaag zou dat dus zijn 14 - 1 = 13
Maar wanneer deze dus onder de 1 gaat werkt ie niet meer.

Het scriptje van Jan heb ik nog eens op een andere server getest.
Op PHP Version 4.4.0 werkt ie wel!
Op PHP Version 4.4.7-dev Niet
en op PHP Version 5.1.4 ook niet
 
Slewey

Slewey

14/05/2007 19:20:00
Quote Anchor link
Ondertussen is het gelukt;
Misschien niet de makkelijkste manier, maar het werkt voor mij!

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
    $date             = time();
    
    $day             = date('d', $date);        // Dag
    $weekday        = date('w', $date);        // Dag van de Week
    $week            = date('W', $date);        // Week nummer
    $month             = date('m', $date);     // Maand nummer
    $year             = date('Y', $date);        // Jaar

    $first_day         = date("w", mktime(0, 0, 0, $month, 1, $year));        // Eerste dag van de maand
    $total_days     = date("t", mktime(0, 0, 0, $month, 1, $year));        // Aantal dagen van de maand
    
    $get_year         = mktime(0, 0, 0, 1, 1, $year);
    $get_month         = mktime(0, 0, 0, date('n', $get_year), date('j', $get_year)-(date('w', $get_year)-1), $year);
    $get_week        = mktime(0, 0, 0, date('n', $get_month), date('j', $get_month) - 7*(date('W', $get_month)-1), $year);
    
    $monday            = date('d-m-Y',mktime(0, 0, 0, date('n', $get_week), date('j', $get_week) + 7*($week-1) + 0, date('Y', $get_week)));
    $tuesday        = date('d-m-Y',mktime(0, 0, 0, date('n', $get_week), date('j', $get_week) + 7*($week-1) + 1, date('Y', $get_week)));
    $wednesday        = date('d-m-Y',mktime(0, 0, 0, date('n', $get_week), date('j', $get_week) + 7*($week-1) + 2, date('Y', $get_week)));
    $thursday        = date('d-m-Y',mktime(0, 0, 0, date('n', $get_week), date('j', $get_week) + 7*($week-1) + 3, date('Y', $get_week)));
    $friday            = date('d-m-Y',mktime(0, 0, 0, date('n', $get_week), date('j', $get_week) + 7*($week-1) + 4, date('Y', $get_week)));
    $saturday        = date('d-m-Y',mktime(0, 0, 0, date('n', $get_week), date('j', $get_week) + 7*($week-1) + 5, date('Y', $get_week)));
    $sunday            = date('d-m-Y',mktime(0, 0, 0, date('n', $get_week), date('j', $get_week) + 7*($week-1) + 6, date('Y', $get_week)));
 



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.