Oud 25-01-2002, 09:23
TouchOfDarkness
Avatar van TouchOfDarkness
TouchOfDarkness is offline
heb het me al een tijdje zitten afvragen, hoe doe ik het volgende met date() en mktime():

date("z") = dag van het jaar, dus 0 - 365

dus vandaag : date("z") = 24;

hoe kom ik nu, met bv. mktime() terug naar wat voor datum bij dat dagnummer hoort?

duidelijk is dat dit niet werkt :

Code:
$day = date("z");
echo date("Y-m-d", mktime(0,0,0,0,$day,0));
echo date("Y-m-d", mktime(0,0,0,$day));
iemand een idee hoe dit wel te fixen?
__________________
He can't hear the sirens, cause silence is the greatest sleep of them all.
Met citaat reageren
Advertentie
Oud 25-01-2002, 13:07
Jon
Avatar van Jon
Jon is offline
Met alleen het dagnummer kun je weinig beginnen; je moet ook rekening houden met het jaar (ivm schrikkeljaren).
__________________
Wer nicht fragt bleibt dumm.
Met citaat reageren
Oud 25-01-2002, 13:24
Manuzhai
Avatar van Manuzhai
Manuzhai is offline
In principe moet je wel kunnen mktime()en, maar dan moet je dus wel het jaar meegeven, denk ik.

Manuzhai
__________________
Slechts beschikbaar via naamzoek/privebericht.
Met citaat reageren
Oud 25-01-2002, 13:54
Doc
Avatar van Doc
Doc is offline
Ik weer eens lief zijn en iemand proberen te helpen door een lap code te typen
Code:
// Functie komt van PHP.NET
// --------------------------
function days_in_feb($year){

	//$year must be YYYY
	//[gregorian] leap year math :
	
	if ($year < 0) $year++;
	$year += 4800;

    if ( ($year % 4) == 0) {
		if (($year % 100) == 0) {
		    if (($year % 400) == 0) {
				return(29);
		    } else {
				return(28);
		    }
		} else {
		    return(29);
		}
    } else {
		return(28);
    }
}
// Functie day2date($days, $year)
// Geschreven door: Paul Olthof
// © Copyright Paul Olthof 2002
// --------------------------
function days2date($days, $year){
   // Januari
   if($days<=31){
       $date = date("Y-m-d", mktime(0,0,0,0,$days,$year));
   }
   // Februari
   if($days<=(31+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,1,$days-31,$year));
   }
   // Maart
   if($days<=(62+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,2,$days-(31+days_in_feb($year)),$year));
   }
   // April
   if($days<=(92+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,3,$days-(62+days_in_feb($year)),$year));
   }
   // Mei
   if($days<=(123+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,4,$days-(92+days_in_feb($year)),$year));
   }
   // Juni
   if($days<=(153+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,5,$days-(123+days_in_feb($year)),$year));
   }
   // Juli
   if($days<=(184+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,6,$days-(153+days_in_feb($year)),$year));
   }
   // Augustus
   if($days<=(215+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,7,$days-(184+days_in_feb($year)),$year));
   }
   // September
   if($days<=(245+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,8,$days-(215+days_in_feb($year)),$year));
   }
   // Oktober
   if($days<=(276+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,9,$days-(245+days_in_feb($year)),$year));
   }
   // November
   if($days<=(306+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,10,$days-(276+days_in_feb($year)),$year));
   }
   // December
   if($days<=(337+days_in_feb($year))){
       $date = date("Y-m-d", mktime(0,0,0,11,$days-(306+days_in_feb($year)),$year));
   }
   // Teveel - Doe Recursie
   if($days>(337+days_in_feb($year))){
       $date = day2date($days-(337+days_in_feb($year)));
   }
   return $date;
}
Zo deze functie heb ik snel ff geschreven, want ik wist geen functie om dit uit te voeren, ik hoop dat 'ie werkt, want ik heb 'm niet getest...als je 'm gebruikt, dat is 't wel vriendelijk om de credits te vermelden En uiteraard © Copyright Paul Olthof 2002

Veel suc6!
__________________
Ik ontken met kracht dat ik erkenning geef aan mensen die onkennen te erkennen onkennend miskend te zijn...:p
Met citaat reageren
Oud 25-01-2002, 16:24
Chimera
Avatar van Chimera
Chimera is offline
Grappig. PHP rekent namelijk zelf automatisch de juiste dag uit. Probeer 300-01-2002 maar eens.
Met citaat reageren
Oud 25-01-2002, 17:58
TouchOfDarkness
Avatar van TouchOfDarkness
TouchOfDarkness is offline
Citaat:
Chimera schreef:
Grappig. PHP rekent namelijk zelf automatisch de juiste dag uit. Probeer 300-01-2002 maar eens.

figures....had ik ff nie bij nagedacht

thnx!
__________________
He can't hear the sirens, cause silence is the greatest sleep of them all.
Met citaat reageren
Oud 25-01-2002, 18:00
TouchOfDarkness
Avatar van TouchOfDarkness
TouchOfDarkness is offline
Citaat:
Doc schreef:
Ik weer eens lief zijn en iemand proberen te helpen door een lap code te typen
Functie komt van PHP.NET

<< knip >>
whehe ontzettend bedankt voor de moeite maar zoals Chimera al zei:

Code:
$today = date("z");
$dag = date("Y-m-d", mktime(0,0,0,date("m"),$today,date("Y")));
echo $dag;
__________________
He can't hear the sirens, cause silence is the greatest sleep of them all.
Met citaat reageren
Oud 25-01-2002, 19:46
Doc
Avatar van Doc
Doc is offline
Citaat:
TouchOfDarkness schreef:
Code:
$today = date("z");
$dag = date("Y-m-d", mktime(0,0,0,date("m"),$today,date("Y")));
echo $dag;
Dat d8 ik dus ook, maarjah...ik had ff zin om een blok code te typen
__________________
Ik ontken met kracht dat ik erkenning geef aan mensen die onkennen te erkennen onkennend miskend te zijn...:p
Met citaat reageren
Oud 25-01-2002, 20:05
Speedo
Speedo is offline
Zoals voor alle leuke dingen in het leven hebben slimme mensen hier ook weer een algoritme voor bedacht. Ik ga je geen code geven maar hieronder staat de pseudo:

// Gebruik de volgende formule om van
// een datum naar een dag van de week te
// om te rekenen :

( jaar + jaar / 4 + dag + maandgetal ) / 7 ;

// Hier neem je de rest uit (->modulo="%"=restdeling)

// Jaar is laatste twee cijfers van dat jaar
// Jaar / 4 -> naar beneden afronden
// Dag = dag v.d. maand
// Maandgetal :
// - Januari : 1
// - Februari : 4
// - Maart : 4
// - April : 0
// - Mei : 2
// - Juni : 5
// - Juli : 0
// - Augustus : 3
// - September : 6
// - Oktober : 1
// - November : 4
// - December : 6


// Schrikkeljaar -> Alle maandgetallen++ ;
// De rest v.d. deling geeft de dag aan: 1-> Zondag, 2 -> Maandag, ..... 0-> Zaterdag

// Alles wat je hoeft te doen is de hele formule omkeren (tip: php is handig met arrays dus voor de maandgetallen gebruik je die

// (Vergeet niet de teller van de breuk te "++" -en als je een datum na 01012001 uit wil rekenen.
Met citaat reageren
Oud 25-01-2002, 20:09
Doc
Avatar van Doc
Doc is offline
Als je in een jaar zit dat weer deelbaar is door 400 dan is er juist weer geen schrikkeljaar ofzo....was nog zo'n uitzonderings regel
__________________
Ik ontken met kracht dat ik erkenning geef aan mensen die onkennen te erkennen onkennend miskend te zijn...:p
Met citaat reageren
Oud 25-01-2002, 20:19
Speedo
Speedo is offline
Owja de bovenstaande code is voor als je de dag van de week hebt en dan de datum moet hebben. Als je van de dag in het jaar uitgaat moet je het als volgt aanpakken:

// Een jaar bestaat uit 12 maanden
// Deze maanden hebben verschillende aantallen dagen (31/28 of 29/31/30/31 enz.)
// Controleer in welke maand de dag die je moet hebben valt
// Zoek de bijbehorende week dr bij
// En dan heb je de dag ook zo te pakken
// ALs je codevoorbeelden moet hebben zeg je het maar

mzzzl
Met citaat reageren
Oud 26-01-2002, 13:52
TouchOfDarkness
Avatar van TouchOfDarkness
TouchOfDarkness is offline
wat jij nou precies wil vertellen Speedo is mij een raadsel, de dag van de week bepalen in PHP kan echt veel makkelijk

functie date() bestaat nie voor nix
__________________
He can't hear the sirens, cause silence is the greatest sleep of them all.
Met citaat reageren
Oud 26-01-2002, 14:23
Chimera
Avatar van Chimera
Chimera is offline
Citaat:
TouchOfDarkness schreef:
wat jij nou precies wil vertellen Speedo is mij een raadsel, de dag van de week bepalen in PHP kan echt veel makkelijk
Idd. Dergelijke functies zelf schrijven is nogal een klein beetje tijdverspilling.
Met citaat reageren
Advertentie
Reageren

Topictools Zoek in deze topic
Zoek in deze topic:

Geavanceerd zoeken

Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 13:51.