[php] datum reeks

Pagina: 1
Acties:

  • Haranaka
  • Registratie: September 2000
  • Laatst online: 07-06 23:13
Ik 2 variabelen, een begin datum en een einddatum. Nu wil ik dat php alle datums die er tussen liggen uitpoept.

Ik weet alleen niet hoe ik dit het beste kan aanpakken. Moet ik eerst tellen hoeveel dagen dat het zijn en dan in een zoveel keer een dagje bij de begin datum op te tellen. Of zijn hiervoor aparte mooie funkties waar ik het bestaan niet van af weet. Of zijn er nog andere (beter) mogelijkheden?

Al vast bedankt voor de reacties.

...


Verwijderd

Maak van beide vars een unixtime (seconden vanaf epoch).
code:
1
2
3
4
5
6
7
8
9
10
while( $time < $endtime)
{
   $time+= 86400; // 1 dag er bij op
   showtime($time);
}

function showtime($time)
{
   // zet unixtime om naar datum en poep uit
}

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Grab de twee datums, convert ze naar een unix timestamp en trek ze van elkaar af

Gooi er dan een (gehele) deling overheen door het aantal secondes in een dag (of was de Timestamp in ms?) en je hebt het aantal dagen ertussen.

Voer dan al die dagen in met http://www.php.net/manual/en/function.date.php en dan zou het kunnen werken. (ff uit de losse pols)
code:
1
2
3
4
5
6
7
8
9
10
11
$date1 = bla; //datum 1
$date2 = bla1; //datum 2

$timestamp1 = mktime( $date1 );
$timestamp2 = mktime( $date2 );

$aantalDagen = ($timestamp2 - $timestamp1) / aantal_sec_in_een_dag;
for(int i = 1; i < aantal_sec_in_een_dag; i++){

     echo date( "format", $timestamp1*( i * aantal_sec_in_een_dag) );
}

zoiets?

Verwijderd

Vind mijn oplossing mooier, want het aantal dagen heb je nl. niet nodig ;)

Moet je nog wel ff while($time < ($endtime-86400)) van maken anders heb je de laatste dag er ook bij en die ligt er dus niet tussen.

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Niet elke dag heeft 24*60*60 seconden (denk aan zomer/wintertijd). Daarnaast hoef je van te voren natuurlijk niet te weten hoeveel dagen het zijn. Waneer je van een while lus gebruik maakt ipv een for loop kun je gewoon doorgaan todat je bij de einddatum bent (zie ook Glimi's post)..

Kijk gewoon eens bij de date en time functions in de PHP handleiding of er iets bij zit wat je kunt gebruiken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

PHP:
1
<?$d1=array("d"=>1,"m"=>8,"y"=>2000);$d2=array("d"=>1,"m"=>8,"y"=>2001);$end=mktime(0,0,0,$d2["m"],$d2["d"],$d2["y"]);for ($newday=mktime(0,0,0,$d1["m"],$d1["d"],$d1["y"]);$end > $newday;$newday=mktime(0,0,0,$d1["m"],$d1["d"]++,$d1["y"])) {    echo date("d m Y",$newday),"<BR>";}?>

HTH :)

Programmer - an organism that turns coffee into software.


  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Geen edit wat dan verneukt topix de php code


Hij houdt rekening met zomer/wintertijd, schrikkeljaren... :)

Programmer - an organism that turns coffee into software.


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 13:44
Op dinsdag 21 mei 2002 11:33 schreef LuCarD het volgende:
Hij houdt rekening met zomer/wintertijd, schrikkeljaren... :)
Nette oplossing. ;)

Even ter documentatie: dit werkt zo eenvoudig omdat mktime ongeldige data automatisch corrigeert (32 januari wordt 1 februari).
Pagina: 1