#18736 [NEW]: mktime gives an unexpected value
| From: | fabian dot eidner at firemail dot de | Date: | Sun, 04 Aug 2002 20:10:07 +0000 |
| Subject: | #18736 [NEW]: mktime gives an unexpected value | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-15981@lists.php.net to get a copy of this message | ||
From: fabian.eidner@firemail.de
Operating system: Win2000
PHP version: 4CVS-2002-08-04
PHP Bug Type: Date/time related
Bug description: mktime gives an unexpected value
Hello everybody,
I have programmed a routine, which calculates the difference "erg" between
the two dates "bis" minus "von". This works out well for many values, but
for the combination
$von = mktime(0,0,0,1,1,2002);
$bis = mktime(0,0,0,5,13,2002);
a wrong value is going to be calculated (erge and erge2 produce floating
values instead of integer values).
Please have a look at the following source code (especially the following
two lines):
$von = mktime(0,0,0,$t1,$t2,$t3);
$bis = mktime(0,0,0,$t4,$t5,$t6);
-----
<html>
<head>
<title>-----[ Geräte Bestellung ]-----</title>
<style type="text/css">
<!--
a:link { text-decoration:none; font-weight:bold; color:#AFAFAF; }
a:visited { text-decoration:none; font-weight:bold; color:#AFAFAF; }
a:hover { text-decoration:none; font-weight:bold; color:#FFBF00; }
a:active { text-decoration:none; font-weight:bold; color:#FFFF00; }
-->
</style>
</head>
<body text="#000000" bgcolor="#EFEFEF" link="#FF0000"
alink="#FFFF00"
vlink="#FF0000">
<?
echo "<font color='#0060FF' size='+1'>Geräte
Reservierung</font>";
echo "<hr noshade size='1'
color='#0060FF'><br><br>";
echo "<form
action='order.php?action=send3&$t1&$t2&$t3&$t4&$t5&$t6&$id&$coast'
method='post'><table bordercolor='1' width='750'
height='550'><tr><td
colspan='4'><font
color='#0060FF'><b>Bestell-Formular</b></font></td></tr><tr><td
colspan='4'><font
color='#0000FF'><b>Hinweis:</b></font><br>Bitte tragen
sie in das unten stehende Formular:<br><font color='#FF0000'>Name u. vor
Name:</font><br>und<br><font color='#FF0000'>Kostenstelle
ein.</font><br>Ebenso sollten sie nicht vergessen das gewünschte Gerät
auszusuchen.<br>Bei von bis geben sie den Zeitraum der Bestellung
ein.</td></tr><tr><td>Name: <input
type='Text' name='id'
value='' size='20'
maxlength='30'> </td><td>Kostenstelle: <input
type='Text' name='coast' value='' size='9'
maxlength='9'> <font color='#FF0000'>ohne
(0)</font></td><td
colspan='2'>Gerät: <select
name='Teile' size='1'><option value='Beamer'>Beamer<option
value='Laptop'>Laptop</select></td></tr><tr><td
colspan='4'><textarea
name='bem' cols='90'
rows='3'></textarea></td></tr><tr><td
colspan='4'><font
color='#0000FF'><b>Hinweis:</b></font><br>Bitte geben
sie ein vollständiges Datum an, z.B. 04<font
color='#0000BF'>(Monat)</font>.05<font
color='#0000BF'>(Tag)</font>.2002<font
color='#0000BF'>(Jahr)</font></td></tr><tr><td
colspan='2'>Von:<br>Monat: <select name='t1'
size='1'><option
value='1'>1<option value='2'>2<option
value='3'>3<option
value='4'>4<option value='5'>5<option
value='6'>6<option
value='7'>7<option value='8'>8<option
value='9'>9<option
value='10'>10<option value='11'>11<option
value='12'>12</select> Tag: <select size='1'
name='t2'><option
value='1'>1<option value='2'>2<option
value='3'>3<option
value='4'>4<option value='5'>5<option
value='6'>6<option
value='7'>7<option value='8'>8<option
value='9'>9<option
value='10'>10<option value='11'>11<option
value='12'>12<option
value='13'>13<option value='14'>14<option
value='15'>15<option
value='16'>16<option value='17'>17<option
value='18'>18<option
value='19'>19<option value='20'>20<option
value='21'>21<option
value='22'>22<option value='23'>23<option
value='24'>24<option
value='25'>25<option value='26'>26<option
value='27'>27<option
value='28'>28<option value='29'>29<option
value='30'>30<option
value='31'>31</select> Jahr: <select size='1'
name='t3'>";
include ("TXT/von_m.txt");echo
"</select><br>Bis:<br>Monat: <select
size='1' name='t4'><option value='1'>1<option
value='2'>2<option
value='3'>3<option value='4'>4<option
value='5'>5<option
value='6'>6<option value='7'>7<option
value='8'>8<option
value='9'>9<option value='10'>10<option
value='11'>11<option
value='12'>12</select> Tag: <select size='1'
name='t5'><option
value='1'>1<option value='2'>2<option
value='3'>3<option
value='4'>4<option value='5'>5<option
value='6'>6<option
value='7'>7<option value='8'>8<option
value='9'>9<option
value='10'>10<option value='11'>11<option
value='12'>12<option
value='13'>13<option value='14'>14<option
value='15'>15<option
value='16'>16<option value='17'>17<option
value='18'>18<option
value='19'>19<option value='20'>20<option
value='21'>21<option
value='22'>22<option value='23'>23<option
value='24'>24<option
value='25'>25<option value='26'>26<option
value='27'>27<option
value='28'>28<option value='29'>29<option
value='30'>30<option
value='31'>31</select> Jahr: <select size='1'
name='t6'>";
include ("TXT/bis_m.txt");echo
"</select></td><td></td></tr><tr><td
colspan='4'><input type='Submit' name='Sub'
value='Senden'> <input
type='reset'></input></td></tr></table></form>";
if($action == "send3")
{
if($t1 && $t2 && $t3 && $t4 && $t5 && $t6 < 1 || $t1
> 12 || $t4 > 12||
$t2 > 31 || $t5 > 31 || $t3 < 1970 || $t6 < 1970 || $t3 > $t6 || $t1==$t4
&& $t2==$t5 && $t3==$t6)
{
echo "Sie haben kein Datum oder ein falsches Datum eingegeben.";
}
else
{
echo "Von:<br>";
echo mktime(0,0,0,$t1,$t2,$t3)." | ";
echo date("D F Y", mktime(0,0,0,$t1,$t2,$t3));
echo "<br>Bis:<br>";
echo mktime(0,0,0,$t4,$t5,$t6)." | ";
echo date("D F Y", mktime(0,0,0,$t4,$t5,$t6));
$von = mktime(0,0,0,$t1,$t2,$t3);
$bis = mktime(0,0,0,$t4,$t5,$t6);
$erg = $bis-$von;
if ($erg <=0)
{
echo "<br><center><font color='#FF0000'>Sie haben eine
ungültige
Eingabe gemacht!!!</font></center>";
}
else if($Teile == "Beamer")
{
$erge = $erg/86400;
$erge2 = (($erge-1)*(30))+50;
echo "<br>Datum erstellt...";
echo "<br>Name: <font
color='#0000DF'><b>".$id."</b></font>";
echo "<br>Kostenstelle: <font
color='#0000DF'><b>".$coast."</b></font>";
echo "<br>Das selektierte Gerät ist ein: <font
color='#0000BF'><b>Beamer</b></font>";
echo "<br>Die Kosten belaufen sich auf: <font
color='#FF0000'><b>".$erge2."</b>Euro</font>";
echo "<br>Sie haben folgende Bemerkung gemacht: <font
color='#FF0000'><b>".$bem."</b></font>";
echo "<center><form action='order2.php'
method='post'><table
border='1' bgcolor='#0070C0' width='670'><tr><td
colspan='2'><font
color='#FFFFFF'><b>Bitte überprüfen Sie die Eingaben und vergewissern Sie
sich das alles korrekt ausgefüllt
ist!!!</font></td></tr><tr><td><input
type='Submit' name='Sub2'
value='Senden'></input></td><td><a
href='order.php'><b>Daten neu
eingeben</b></a></td></tr></table></form></center>";
}
else if($Teile == "Laptop")
{
$erge = $erg/86400;
$erge2 = (($erge-1)*(50))+70;
echo "<br>Datum erstellt...";
echo "<br>Name: <font
color='#0000DF'><b>".$id."</b></font>";
echo "<br>Kostenstelle: <font
color='#0000DF'><b>".$coast."</b></font>";
echo "<br>Das selektierte Gerät ist ein: <font
color='#0000BF'><b>Laptop</b></font>";
echo "<br>Die Kosten belaufen sich auf: <font
color='#FF0000'><b>".$erge2."</b>Euro</font>";
echo "<br>Sie haben folgende Bemerkung gemacht: <font
color='#FF0000'><b>".$bem."</b></font>";
echo "<center><form action='order2.php'
method='post'><table
border='1' bgcolor='#0070C0' width='670'><tr><td
colspan='2'><font
color='#FFFFFF'><b>Bitte überprüfen Sie die Eingaben und vergewissern Sie
sich das alles korrekt ausgefüllt
ist!!!</font></td></tr><tr><td><input
type='Submit' name='Sub2'
value='Senden'></input></td><td><a
href='order.php'><b>Daten neu
eingeben</b></a></td></tr></table></form></center>";
}
}
}
?>
</body>
</html>
Best regards,
Fabian Eidner
--
Edit bug report at http://bugs.php.net/?id=18736&edit=1
--
Fixed in CVS: http://bugs.php.net/fix.php?id=18736&r=fixedcvs
Fixed in release: http://bugs.php.net/fix.php?id=18736&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=18736&r=needtrace
Try newer version: http://bugs.php.net/fix.php?id=18736&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=18736&r=support
Expected behavior: http://bugs.php.net/fix.php?id=18736&r=notwrong
Not enough info: http://bugs.php.net/fix.php?id=18736&r=notenoughinfo
Submitted twice: http://bugs.php.net/fix.php?id=18736&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=18736&r=globals