08. september 2003 - 17:39
Der er
6 kommentarer og
1 løsning
find datoer's timestamp imellem to datoer
hvis jeg f.eks har to datoer:
1. april 2003 -> timestamp: 1049148000
6. april 2003 -> timestamp: 1049580000
-så mangler jeg en funktion eller lign, der kan gå ind og skaffe mig timestamps på alle de dage der er inkluderet..
dvs jeg skal bruge time stamps på 1/4, 2/4 -> 6/4.
-men den skal også kunne klare fx:
29/4-2003 -> 3/5-2003
-der skal så oprettes et felt i min database for hver dag der er incl.
jeg havde tænkt noget i stil med:
timestamp fra sidste dato minus timestamp fra første dato = antal sekunder imellem.
---> $difference = ($timestamp2 - $timestamp1);
og så:
$numberofdays = ($difference / 86400);
$dato = $timestamp1;
$secs = 86400;
of så:
for ($day=1; $day<=$numberofdays; $day++) {
mysql_query("INSERT INTO ". $database ." SET startdato='$timestamp1', slutdato='$timestamp2', dato='$dato'");
$dato = $dato + $secs;
}
?>
jeg er ikke sikker på om jeg er inde på det rette, men under alle omstændigheder syntes jeg ikke det er særlig "lækker" kode... jeg havde lidt håbet nogen ville hjælpe mig med at lave en funktion til det.
08. september 2003 - 18:01
#4
<?php
$start = 1049148000;
$end = 1049580000;
for ($time=$start;$time<=$end;$time+=86400) {
mysql_query("INSERT INTO $database (startdato,slutdato,dato) VALUES ($start,$end,$time)") or die(mysql_error());
}
?>
08. september 2003 - 21:26
#7
damn...
jeg har sq lidt problemer med den..
indtil nu har den virket perfekt, men jeg får problemer i december måned...
hvis jeg vælger 27. og 28. december er der ingen problemer, men lige så snart jeg tager 29+ december, flipper den ud og tror det er 2004...
-det er naturligvis også 2004 efter den 31. december, hvilket er ok, men ikke at den tror 29,30 og 31 december er 2004...
hvad kan jeg have gjort forkert?
for ($time=$startdato; $time<=$slutdato; $time+=86400) {
$time = strftime("%d %B %G", $time); $time = strtotime($time);
mysql_query("INSERT INTO gallerikik_dk_kalender (new_name1, new_name2, new_name3, udstiller, stil, overskrift, content, dato, startdato, slutdato, unik_id) VALUES ('$new_name1', '$new_name2', '$new_name3', '$udstiller', '$stil', '$overskrift', '$content', '$time', '$startdato', '$slutdato', '$unik_id');") or die(mysql_error());
}
jeg ved godt det er lidt dobbelt, at tage først fra timestamp -> formateret dato -> timestamp, men nogle gange tæller den en time forkert hvis jeg bruger det med at trække de 86400 sekunder fra... på den anden måde tvinger jeg den til at tage timestamp for præcis den beregnede dato igen... -det virker ihvertfald resten af året...