Avatar billede angelenglen Nybegynder
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.
Avatar billede webnord Novice
08. september 2003 - 17:41 #1
Du kan bruge DateDiff

Falcon
Avatar billede angelenglen Nybegynder
08. september 2003 - 17:53 #2
hvad er DateDiff?
-kan ikke finde det på php.net's funktions liste
Avatar billede schaefner Juniormester
08. september 2003 - 17:53 #3
Avatar billede schaefner Juniormester
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());
}
?>
Avatar billede angelenglen Nybegynder
08. september 2003 - 18:12 #5
rigtigt nice schaefner - noget i samme stil, men KLART mere overskueligt.

svar for points :)
Avatar billede schaefner Juniormester
08. september 2003 - 18:17 #6
<:)~

mvh. Jesper Sørensen
Avatar billede angelenglen Nybegynder
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...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester