Toon posts:

[PHP] een datum berekenen

Pagina: 1
Acties:
  • 113 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik heb een functie nodig waarmee ik vanuit 3 variabelen een datum kan berekenen. Deze 3 variabelen zijn (helaas)
$DOW (Day of Week, maandag = 0)
$week (weeknummer)
$year (aantal jaren na 2000)

Op deze variabelen heb ik geen invloed. Die krijg ik zo van een externe bron binnen.

nou heb ik deze code verzonnen, maar ik kan me haast niet voorstellen dat dit niet beter/makkelijker te doen is. Wie weet er een beter alternatief.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?
 

function createDate($DOW, $week, $year)
{
    $maand[1]="31";
    $maand[2]="28";
    if (($year % 4) == 0) { $maand[2]="29"; }
    $maand[3]="31";
    $maand[4]="30";
    $maand[5]="31";
    $maand[6]="30";
    $maand[7]="31";
    $maand[8]="31";
    $maand[9]="30";
    $maand[10]="31";
    $maand[11]="30";
    $maand[12]="31";

    $aantal_dagen = (($week - 1) * 7) + $DOW + 1;
    $maand_nr = 1;
    $year += 2000;

    for($i=1; $i<13; $i++)
    {
        if ($aantal_dagen > $maand[$i])
        {
            $maand_nr++;
            $aantal_dagen -= $maand[$i];
        }
        else
        {
            $i = 13;
        }
    }

    $return_date[day] = $aantal_dagen;
    $return_date[month] = $maand_nr;
    $return_date[year] = $year;

    Return($return_date);
}    
?>

  • goalgetter
  • Registratie: Juni 1999
  • Laatst online: 25-08 15:24
Ik ben niet zo heel erg helder meer, maar toch een poging :)
PHP:
1
2
3
4
5
<?
$dayofyear = 7*$week + $DOW;
$year += 2000;
$datum = date ("d-m-Y",mktime(0,0,0,0,$dayofyear,$year));
?>

Na een beetje geklooi :
PHP:
1
2
3
4
5
<?
$dayofyear = 7*$week + $DOW +1;
$year += 2000;
$datum = date ("d-m-Y",mktime(0,0,0,1,$dayofyear,$year));
?>

Verwijderd

Topicstarter
Nou zit er volgens mij nog 1 foutje in, maar in ieder geval bedankt !!

Het moet zijn:
PHP:
1
2
3
4
5
<?
$dayofyear = 7*($week - 1) + $DOW +1;
$year += 2000;
$datum = date ("d-m-Y",mktime(0,0,0,1,$dayofyear,$year));
?>

(er is 1 van het weeknummer afgetrokken)

  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Hmmmmz volgens mij zijn er gewoon standaard functies voor die het voor je uitrekenen.
Dit ziet er iig brak uit.