09. marts 2005 - 18:02
Der er
8 kommentarer og
1 løsning
Foreskellen mellem to datoer?
Hej eksperter,
Jeg er forholdsvis ny til php, og søger lidt hjælp til en funktion, som skal regne forskellen ud mellem to datoer i dage.
Jeg vil hente siden med denne kode, så jeg kan have flere forskellige datoer, men bruger den samme side til at behandle datoen i:
<iframe name="HovedFrame" src="side.php?navnl=Palle&navn2=Kirsten&dato=22-10-04" align="center" name="HovedFrame" scrolling=="no" style="width:100%; height:50px;" frameborder="0"></iframe>
Side Koden:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Kæreste dage</title>
</head>
<body>
<?php
$navn1 = $_GET['navn1'];
$navn2 = $_GET['navn2'];
$dato = $_GET['dato'];
$dage = $dato - time()
echo "$navn1 og $navn2 har været kærster i $dage"
?>
</body>
</html>
09. marts 2005 - 19:12
#4
Hvordan får jeg dags dato? $idag skal være lig med datoen i dag
Med den funktion kommer koden til at se sådan ud:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>Kæreste dage</title>
</head>
<body>
<?php
function datediff($interval, $datefrom, $dateto, $using_timestamps = false) {
/*
$interval can be:
yyyy - Number of full years
q - Number of full quarters
m - Number of full months
y - Difference between day numbers
(eg 1st Jan 2004 is "1", the first day. 2nd Feb 2003 is "33". The datediff is "-32".)
d - Number of full days
w - Number of full weekdays
ww - Number of full weeks
h - Number of full hours
n - Number of full minutes
s - Number of full seconds (default)
*/
if (!$using_timestamps) {
$datefrom = strtotime($datefrom, 0);
$dateto = strtotime($dateto, 0);
}
$difference = $dateto - $datefrom; // Difference in seconds
switch($interval) {
case 'yyyy': // Number of full years
$years_difference = floor($difference / 31536000);
if (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom), date("j", $datefrom), date("Y", $datefrom)+$years_difference) > $dateto) {
$years_difference--;
}
if (mktime(date("H", $dateto), date("i", $dateto), date("s", $dateto), date("n", $dateto), date("j", $dateto), date("Y", $dateto)-($years_difference+1)) > $datefrom) {
$years_difference++;
}
$datediff = $years_difference;
break;
case "q": // Number of full quarters
$quarters_difference = floor($difference / 8035200);
while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($quarters_difference*3), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
$months_difference++;
}
$quarters_difference--;
$datediff = $quarters_difference;
break;
case "m": // Number of full months
$months_difference = floor($difference / 2678400);
while (mktime(date("H", $datefrom), date("i", $datefrom), date("s", $datefrom), date("n", $datefrom)+($months_difference), date("j", $dateto), date("Y", $datefrom)) < $dateto) {
$months_difference++;
}
$months_difference--;
$datediff = $months_difference;
break;
case 'y': // Difference between day numbers
$datediff = date("z", $dateto) - date("z", $datefrom);
break;
case "d": // Number of full days
$datediff = floor($difference / 86400);
break;
case "w": // Number of full weekdays
$days_difference = floor($difference / 86400);
$weeks_difference = floor($days_difference / 7); // Complete weeks
$first_day = date("w", $datefrom);
$days_remainder = floor($days_difference % 7);
$odd_days = $first_day + $days_remainder; // Do we have a Saturday or Sunday in the remainder?
if ($odd_days > 7) { // Sunday
$days_remainder--;
}
if ($odd_days > 6) { // Saturday
$days_remainder--;
}
$datediff = ($weeks_difference * 5) + $days_remainder;
break;
case "ww": // Number of full weeks
$datediff = floor($difference / 604800);
break;
case "h": // Number of full hours
$datediff = floor($difference / 3600);
break;
case "n": // Number of full minutes
$datediff = floor($difference / 60);
break;
default: // Number of full seconds (default)
$datediff = $difference;
break;
}
return $datediff;
}
//het oplysninger
$navn1 = $_GET['navn1'];
$navn2 = $_GET['navn2'];
$dato = $_GET['dato'];
$idag = date()
$dage = datediff('w', '9 July 2003', '$idag', false);
echo "$navn1 og $navn2 har været kærster i $dage dage"
?>
</body>
</html>
09. marts 2005 - 19:42
#6
Ja, men hvilke faktorer skal jeg sætte ind, for at skriptet virker, jeg kan jo heller ikke linke med mellemrum, så kan det ikke lade sig gøre at få datoen angivet som dd-mm-åååå