Om de 28 dagen een bepaald bestand includen

Status
Niet open voor verdere reacties.

Frenske123

Terugkerende gebruiker
Lid geworden
2 jul 2007
Berichten
1.267
Hallo,

Ik heb nou iets als;

Code:
  if (date("Y") == 2011 && date("m") == 01 && date("d") == 01)  { 
  include "bestand.html";
}
 elseif(date("Y") == 2011 && date("m") == 01 && date("d") == 29)  { 
  include "bestand.html";
}
 elseif(date("Y") == 2011 && date("m") == 02 && date("d") == 26)  { 
  include "bestand.html";
}
enz...

Dus om de 4weken/28 dagen wordt er een bepaald bestand ingevoegd.
Nou moet ik de datum van iedere week invoeren, mijn vraag is hoe dit anders te doen
dus begin datum en daarna om de 28 dagen bestand invoegen.
Ik heb al wat gespeurd maar ben er nog niet helemaal uit, zal iets met de "ophoging", te maken hebben.

Verder is er ook iets wat bestand invoegt b,v elke 3e zaterdag van de maand?
 
Als je het om de 28 dagen wilt doen, kun je gebruik maken van bijvoorbeeld date('z') (dag van het jaar)

PHP:
if ( date( 'z' ) % 28 == 0 ) {
  // 1 januari, en elke 28 dagen daarna. je krijgt dus 1 offset omdat 31 december eigenlijk de 28e dag is, maar die overgeslagen wordt om weer op 1 januari te beginnen.
}

Als je het heel precies wil moet je ook nog even opletten want er zit een gat van 1 dag in (je kunt net niet precies 13*28 dagen kwijt in een jaar) maar dat zal hoogstens betekenen dat je 1x per jaar 29 dagen wacht, weet niet of dat super erg is.

Je kunt voor bijv. 3e zaterdag van de maand gebruik maken van de combinatie "day of the week" date ( 'y' ), en de "day of the month" date ( 'j' ). De 3e zaterdag van de maand is de zaterdag die tussen de 15e en de 20e valt; dus zoiets:

PHP:
if ( date( 'y' ) == 6 && ( date ( 'j' ) >= 15 && date ( 'j' ) <= 20 ) ) {
  // 3e zaterdag van de maand
}
 
Frats , bedankt voor antwoordt

In het voorbeeld gebruik ik 1 januari als begindatum, in de praktijk kan het elke datum zijn
dus b,v 10 maart en dan iedere keer 28 dagen ophogen..eerst volgende is dan 7 april


De 2e optie over dag in een week is bruikbaar, ik ben ook al iets tegen gekomen met o,a

if (mktime(0,0,0,date("n"),date("d")) == strtotime("second thursday",mktime(0,0,0,date("n"),1)) && date("H") >= 09) {
echo "2e donderdag van de maand na 9 uur";
 
De eerste methode zou je ook kunnen gebruiken:
PHP:
$begindatum = strtotime("10 March 2011");
$begindag = date('z', $begindatum);
if ( (date( 'z' ) - $begindag) % 28 == 0 ) {
  // $begindatum, en elke 28 dagen daarna.
}
Na nieuwjaar levert dit echter wel een probleem op.
 
kun je niet weeknummers gaan gebruiken? 28 / 7 = 4, dus na 4 weken kom je op 28 dagen uit...
 
Je zit in alle gevallen met het probleem dat een jaar niet opgebouwd is uit blokken van precies 28 dagen. Je zult dus dagen moeten tellen vanaf je begindatum en dan uitrekenen of iets precies 28 dagen geleden is.

Ik denk dat je het beste gebruik kunt maken van het DateTime object en de diff functie daarvan:
http://nl.php.net/manual/en/datetime.diff.php

Daarmee kun je uitrekenen hoeveel dagen twee data uit elkaar liggen. Dan heb je alleen nog je begin-datum nodig.
 
Ik ben er nog niet uit,,als het al kan, maar denk meer aan een Unix timestamp als begindatum b,v

vandaag 1299780912

dan iedere keer 28 x 86.400 sec erbij , dan heb je met dagen in een jaar e.d niks te maken, alleen weet ik het nog niet toe te passen in iets bruikbaars.

Overigens hoeven te dagen niet binnen een jaar te vallen, gewoon laten doorlopen
anderzijds als het binnen een jaar werkt , is het ook goed
 
Laatst bewerkt:
Heb je datediff bekeken? Die kan, gegeven twee datums, het aantal dagen verschil uitrekenen, dat lijkt me het makkelijkst. Dan hoef je niet moeilijk te gaan doen met seconden en uren.
 
Heb je datediff bekeken? Die kan, gegeven twee datums, het aantal dagen verschil uitrekenen, dat lijkt me het makkelijkst. Dan hoef je niet moeilijk te gaan doen met seconden en uren.


Ja bedankt,,alleen weet ik het nog niet bruikbaar toe te passen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan