Avatar billede cecil Nybegynder
19. december 2001 - 10:25 Der er 7 kommentarer og
1 løsning

Script til at beregne antal dage mellem to datoer.

Hej venner

Jeg mangler en script som kan beregne afstanden mellem to datoer. Jeg har brug for at vide om en given dato er inden for den næste uge.

F.eks. er der mellem den 4/12 og dem 28/11 6 dage. Men hvordan beregnes det smart? Nogen måneder har 30 dage andre 31. og en enkelt 28.

Er der nogen som har sådan en script?
Avatar billede warpgiga Nybegynder
19. december 2001 - 12:04 #1
lav to dato objekter, convert dem til en tal værdi (antal millisek siden 1 jan 1970 eller lign..) træk den lave værdi fra den høje, herfra kan du beregne hvor lang tid der var imellem de to datoer, sorry jeg ikke havde sourcekode ;).
Avatar billede warpgiga Nybegynder
19. december 2001 - 12:08 #2
jeg har lavet en getMonthLength(inMonth, inYear) og getFirstDayOfMonth(inMonth, inYear) hvis det har interesse.
Avatar billede Slettet bruger
19. december 2001 - 14:54 #3
Det er meget nemme i PHP end i JavaScript, det du beskriver! Er du frisk på lidt PHP?
Avatar billede cecil Nybegynder
19. december 2001 - 18:10 #4
ja
Avatar billede Slettet bruger
19. december 2001 - 21:30 #5
Gut!

<html>
<head>
</head>
<body>
<
<?
if ($dato1 && $dato2) {
$dag1 = substr($dato1,0,1);
$maa1 = substr($dato1,3,4);
$aar1 = substr($dato1,6,9);

$dag2 = substr($dato2,0,1);
$maa2 = substr($dato2,3,4);
$aar2 = substr($dato2,6,9);

if (!checkdate($maa1,$dag1,$aar1) || !checkdate($maa2,$dag2,$aar2) echo \"En eller begge af datoerne er ugyldige!\";
else {
$epox1 = mktime(0,0,0,$maa1,$dag1,$aar1);
$epox2 = mktime(0,0,0,$maa2,$dag2,$aar2);
if ($epox1 > $epox2) $forsk = $epox1 - $epox2;
else $forsk = $epox2 - $epox1;
$rs = $forsk / 60 / 60 / 24;
$dage = $floor($rs);
echo \"Der er $dage mellem $dato1 og $dato2!\";
if ($dage > 6) echo \"<br>$dato2 er derfor IKKE indenfor den næste uge!\";
else \"<br>Derfor er $dato2 indenfor den næste uge!\";
}
}
?>

<form name=\"minForm\" action=\"<? echo $PHP_SELF; ?>\" method=\"post\">
Dato 1: <input type=\"text\" name=\"dato1\" size=\"7\" maxlength=\"7\"><br>
Dato 2: <input type=\"text\" name=\"dato2\" size=\"7\" maxlength=\"7\"><br>
<input type=\"submit\" value=\"Tjek datoerne!\">
<br>Formatet på datoerne skal være DD/MM/ÅÅÅÅ!
</form>
</body>
</html>
Avatar billede Slettet bruger
19. december 2001 - 21:48 #6
Ja, der var vist kun 1 milliard fejl i den kode... Her kommer den gennemtestede version:

<html>
<head>
</head>
<body>
<?
if ($dato1 && $dato2) {
$dag1 = substr($dato1,0,2);
$maa1 = substr($dato1,3,2);
$aar1 = substr($dato1,6,4);

$dag2 = substr($dato2,0,2);
$maa2 = substr($dato2,3,2);
$aar2 = substr($dato2,6,4);

if (!checkdate($maa1,$dag1,$aar1) || !checkdate($maa2,$dag2,$aar2)) echo \"En eller begge af datoerne er ugyldige!\";
else {
$epox1 = mktime(0,0,0,$maa1,$dag1,$aar1);
$epox2 = mktime(0,0,0,$maa2,$dag2,$aar2);
if ($epox1 > $epox2) echo \"Dato1 er højere end dato2!\";
else {
$forsk = $epox2 - $epox1;
$rs = $forsk / 60 / 60 / 24;
$dage = floor($rs);
echo \"Der er $dage dage mellem $dato1 og $dato2!\";
if ($dage > 6) echo \"<br>$dato2 er derfor IKKE indenfor den næste uge!\";
else echo \"<br>Derfor er $dato2 indenfor den næste uge!\";
}
}
}
?>

<form name=\"minForm\" action=\"<? echo $PHP_SELF; ?>\" method=\"post\">
Dato 1: <input type=\"text\" name=\"dato1\" size=\"10\" maxlength=\"10\"><br>
Dato 2: <input type=\"text\" name=\"dato2\" size=\"10\" maxlength=\"10\"><br>
<input type=\"submit\" value=\"Tjek datoerne!\">
<br>Formatet på datoerne skal være DD/MM/ÅÅÅÅ!
</form>
</body>
</html>

Den kan ses i fuldt vigør her: http://www.friserverplads.dk/phoenixv/datoforskel.php
Avatar billede cecil Nybegynder
20. december 2001 - 08:42 #7
Tak det virker.

I går, da jeg sov, kom jeg til at give warpqiqa point. Det var en fejl.

Men nu skal du jo have 60 point. Skal jeg oprette et nyt spørgsmål til dig?
Avatar billede Slettet bruger
20. december 2001 - 17:39 #8
Nej, det behøver du ikke, hvis du ikke har tid. Men hvis du en anden gang opretter et spørgsmål herinde, kan du jo evt. lige give mig 60 points ekstra, hvis jeg smutter indenom og giver et svar!
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