Archief - PHP: datum maken adhv weekNR en weekdag

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Noizz.be

Legacy Member
ok :)

mijn kennis rijkt nog niet zo ver om zoiets te fabriceren :(

daarom vraag ik jullie hulp.

ik geef u een weeknummer: bvb 33
en een dag: bvb: dinsdag
jaar is ook gegeven (2005)

Hoe kan ik met PHP weten welke datum dat is?

Alvast bedankt voor de hulp

PS:
voor de geïnteresserden: ik moet een tabel'etje maken, bovenaan komt
week x
en dan elke dag van de week + de datum

Greetz
Noizz

Noizz.be

Legacy Member
maar de int's die ge moet ingeven met mkdate zen enkel

mins, secs, hour, month, year, day (wel in een andere volgorde :))

Noizz

maT'

Legacy Member
Aangezien er bij mijn weten geen functies zijn die zomaar de dag kunnen geven als je een weeknummer ingeeft, zal het anders moeten:
PHP:
<?php
	$Jaar = 2005;
	$Weeknr = 2;
	$WeekDag = 2;  // vertaal dinsdag naar 2
	
	$timestamp_beg = mktime(0, 0, 0, $Maand ,1, $Jaar);
	$timestamp_eind = mktime(0, 0, 0, 12, 1, $Jaar);
	while ($timestamp_beg < $timestamp_eind) {
		if ($Weeknr == date("W", $timestamp_beg)) {
			// eerste dag in die week gevonden;
			for ($dag = 1; $dag<=7; $dag++) {
				if ($WeekDag == date("w", $timestamp_beg)) {
					echo "De dag valt op ". date("d - m - Y", $timestamp_beg);
					$dag = 8; // uit eerste for-lus gaan
					$timestamp_beg = $timestamp_eind; // uit 2de for-lus gaan
				} else {
					$timestamp_beg += 24*60*60;
				}
			}
		} else {
			$timestamp_beg += 24*60*60;
		}
	}
?>
Ik hoop dat je wel beseft dat je het jezelf heel moeilijk maakt.
Week-functies in PHP beginnen pas te "tellen" vanaf de eerste maandag van het jaar, maw: 1 en 2 januari bestaan niet als je enkel via een weeknr je datum wil berekenen. (week 1, dag 1 valt op 3 januari)

Mulle

Legacy Member
PHP:
<?
function datefromweeknr($aYear, $aWeek, $aDay){
    $FirstDayOfWeek=1; //First day of week is Monday        
    $BaseDate=4; //We calculate from 4/1 which is always in week 1  
    $CJDDelta=2415019; //Based on start of Chronological Julian Day
    $StartDate = DelphiDate(mktime(1,0,0,01,$BaseDate,$aYear)); //The date to start with
    $Offset = ($aWeek-1) * 7 - mod(floor($StartDate) + $CJDDelta + 8 - $FirstDayOfWeek,7) + $aDay - 1;
    return PHPUnixTimeStamp($StartDate + $Offset); 
}
function DelphiDate($aPHPTime){ 
    # The Unix Timestamp holds the number of seconds after January 1 1970 01:00:00
    return div($aPHPTime,86400)+25569; 
}
function PHPUnixTimeStamp($aDelphiDate){
    # Delphi's TDate holds number of days after December 30 1899 
    return ($aDelphiDate-25569)*86400-3600;
}
function mod($number, $div){
    return $number - floor($number/$div)*$div;
}
function div($number, $div){
    return floor($number/$div);
}


$datum = datefromweeknr($jaar,$week,$dag);
?>
Hiermee krijg je de datum in unix vorm. Met de functie date() kan je omzetten naar wat je wil.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan