[datum] Berekenen data in weeknr

Pagina: 1
Acties:

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-11 09:49
Misschien zie ik iets heel simpels over het hoofd, maar ik probeer al een tijdje een systeem te bedenken waarmee ik vanuit een weeknummer in een bepaald jaar de data kan berekenen in die week.

Als weeknummers altijd op 1 januari zouden beginnen was het niet zo'n probleem, maar weeknummers lopen constant door. Soms begint week 1 al eind december en soms is er een week 53. Al met al kom ik er niet echt uit.

Iemand tips? Mocht het helpen in de probleemoplossing: ik gebruik PHP :)

Meer info over weektelling vind je hier

[ Voor 10% gewijzigd door Bosmonster op 10-02-2004 17:58 ]


Verwijderd

Bosmonster schreef op 10 februari 2004 @ 17:56:
Misschien zie ik iets heel simpels over het hoofd, maar ik probeer al een tijdje een systeem te bedenken waarmee ik vanuit een weeknummer in een bepaald jaar de data kan berekenen in die week.

Als weeknummers altijd op 1 januari zouden beginnen was het niet zo'n probleem, maar weeknummers lopen constant door. Soms begint week 1 al eind december en soms is er een week 53. Al met al kom ik er niet echt uit.

Iemand tips? Mocht het helpen in de probleemoplossing: ik gebruik PHP :)

Meer info over weektelling vind je hier
Volgens onze weektellingen:
- Maandag is de eerste dag van de week.
- Week 1 is de week waarin minstens 4 dagen van de week zitten. M.a.w. als deze de donderdag bevat.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  function weektoday($week,$year)
  {
    $day = strtotime($year."-01-01");
    $dayofweek = date("w",$day);
    if ($dayofweek != 5 && $dayofweek != 6 && $dayofweek != 0)
    {
      while(1 != date("w",$day))
      { $day = mktime(0,0,0,date("m", $day),date("d", $day)-1,date("Y", $day));
      }
    }
    else
    { while (1 != date("w",$day))
      { $day = mktime(0,0,0,date("m", $day),date("d", $day)+1,date("Y", $day));
      }
    }
    
    $day = mktime(0,0,0,date("m", $day),date("d", $day)+7*$week-7,date("Y", $day));
    
    return $day;
  }

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 07-12 12:51
Hier kun je misschien ook wel iets mee: http://www.phpbuilder.com/columns/musone19990927.php3?page=3

  • Eärendil
  • Registratie: Februari 2002
  • Nu online
Zo kan het ook:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
function weektomonday($week, $year){
        $daylength = 86400; // in seconden
        $weeklength = 7*$daylength;
 
        //4 jan. is altijd week 1
        $day = strtotime($year."-01-04");
        //dag nummer
        $dayofweek = date("w",$day);
        //grrr, waarom beginnen die weken op zondag?
        $dayofweek = ($dayofweek+6)%7;
 
        return $day - $daylength*$dayofweek + $weeklength*($week-1);
}

[ Voor 15% gewijzigd door Eärendil op 10-02-2004 20:45 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-11 09:49
Hmm die regel dat week 1 de week is waar minimaal 4 dagen van het nieuwe jaar zitten kende ik nog niet... Dat maakt het al ietsje logischer...

Zal morgen als ik weer met de applicatie aan de gang ga eens wat dieper in jullie code duiken. Een ding wat ik lijk te missen en wat ik nog even toe moet voegen is dat als week 1 maar 4 dagen in het nieuw jaar heeft, ik nog wel even die overige dagen uit het jaar daarvoor erbij moet halen. Maar dat is kinderspel dan :)

Thanks!

edit: Dat doet dat script dus ook al.. damn.. wat eenvoudig eigenlijk als je dat regeltje kent van 4 januari!

[ Voor 11% gewijzigd door Bosmonster op 11-02-2004 09:33 ]