0

私はこの「労働」時間の概要を作ろうとしています

ただし、SQL データベースで 2 つの日付間の時間を計算することはできませんが、結果は返されません。

機能した2つのSQLエントリを表示しようとしましたが、計算ではSQLエントリが使用されないようです

ページの上部に次のエラーが表示されます。

Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed to parse time string (31/10-2012 19:14) at position 0 (3): Unexpected character' in D:\xampp\htdocs\admin.php:46 Stack trace: #0 D:\xampp\htdocs\admin.php(46): DateTime->__construct('31/10-2012 19:1...') #1 {main} thrown in D:\xampp\htdocs\admin.php on line 46

ここで何が間違っていますか??

私が助けを必要としているのは43-52行目です。これが私のコードです:

<?php
$host="localhost";
$username="xxxx";
$password="xxxx";
$db_name="xxxxx";
$tbl_name="log";


mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");

$sql="SELECT * FROM $tbl_name ORDER BY id ASC";
$result=mysql_query($sql);


?>
<title>VT Log - Oversigt</title>
<table width="90%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#CCCCCC">
<tr>
<td width="30%" align="center" bgcolor="#E6E6E6"><strong>Navn</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Start</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Slut</strong></td>
<td width="30%" align="center" bgcolor="#E6E6E6"><strong>Kommentar</strong></td>
<td width="15%" align="center" bgcolor="#E6E6E6"><strong>Tid</strong></td>
</tr>

<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['user']; ?><BR></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['start']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['end']; ?></td>
<td align="center" bgcolor="#FFFFFF"><? echo $rows['comment']; ?></td>
<?php
$stamp1 = $rows['start'];
$stamp2 = $rows['end'];
$date1 = new DateTime($stamp2);
$date2 = new DateTime($stamp2);
$diff = $date2->diff($date1);
$hours = $diff->h;
$hours = $hours + ($diff->d*24);
?>
<td align="center" bgcolor="#FFFFFF"><? echo $hours;?></td>
</tr>

<?php
}
mysql_close();
?>
<tr>
<td colspan="5" align="center" bgcolor="#E6E6E6"><?php echo "Total arbejdstid: " . array_sum($numbers) . "\n Timer";?></td>
</tr>
</table>
4

3 に答える 3

3

両方の日付を UNIX タイムスタンプに変換し、差を時間で返します。

SELECT (UNIX_TIMESTAMP(end) - UNIX_TIMESTAMP(start)) / 60.0 / 60.0 as hours_difference

その後、PHPの計算は必要ありません...

于 2012-10-31T19:09:04.657 に答える
1

変化する

$date1 = new DateTime($stamp2);  

これに

 $date1 = new DateTime($stamp1);
于 2012-10-31T19:03:12.490 に答える
1

問題が解決しました!どうもありがとうライアン・グリッグス

SQL クエリを次のように変更します$sql="SELECT *, (UNIX_TIMESTAMP(end) - UNIX_TIMESTAMP(start)) / 60.0 / 60.0 as hours_difference FROM $tbl_name ORDER BY id ASC";

交換

<?php
$stamp1 = $rows['start'];
$stamp2 = $rows['end'];
$date1 = new DateTime($stamp2);
$date2 = new DateTime($stamp2);
$diff = $date2->diff($date1);
$hours = $diff->h;
$hours = $hours + ($diff->d*24);
?>
<td align="center" bgcolor="#FFFFFF"><? echo $hours;?></td>

<td align="center" bgcolor="#FFFFFF"><?$var = number_format($rows['hours_difference'],2);
$var = number_format($var,1);
echo $var; ?></td>
于 2012-10-31T20:00:08.350 に答える