我有此表在我看來爲什麼時間的減法運算返回1而不是0後迴盪
duty | exact | undertime
12:00:00 | 12:00:00 | 01:00:00
undertime是$hour = $duty - $exact
的結果,當我
echo date("H:i:s",$hour);
它呼應01:00 :00,我期待00:00:00這個。我錯過了什麼?
這裏是我的代碼,我使用foreach,因爲責任和確切的數據來自我的數據庫查詢。
<?php foreach($unique_date as $unique_dates):?>
<tr>
<td align="center" colspan="2">
<?php echo date($unique_dates['dtr_date']);?>
</td>
<td align="center" colspan="2">
<?php $timediffs = $unique_dates['timediffs'];
echo $timediffs;
?>
</td>
<td align="center" colspan="2">
<?php $exact_total_sched = $unique_dates['exact_total_sched'];
echo $exact_total_sched;
?>
</td>
<?php
$duty = strtotime($timediffs);
$exact = strtotime($exact_total_sched);
?>
<?php
if($duty < $exact)
{
echo "<td align=\"center\" colspan=\"2\">";
#UNDERTIME
$hour1 = $exact-$duty;
echo date("H:i:s",$hour1);
echo "</td>";
echo "<td align=\"center\" colspan=\"2\">";
echo date("00:00:00");
echo "</td>";
}
else if($duty > $exact)
{
echo "<td align=\"center\" colspan=\"2\">";
echo date("00:00:00");
echo "</td>";
echo "<td align=\"center\" colspan=\"2\">";
#OVERTIME
$hour2 = $duty-$exact;
echo date("H:i:s",$hour2);
echo "</td>";
}
else if($duty == $exact)
{
echo "<td align=\"center\" colspan=\"2\">";
$hour3 = $duty-$exact;
echo date("H:i:s",$hour3);
echo "</td>";
echo "<td align=\"center\" colspan=\"2\">";
echo date("00:00:00");
echo "</td>";
}
?>
</tr>
<?php endforeach ?>
難道這些值的字符串一起? unix時間戳? DateTime對象?你怎麼做減法? SHOW CODE和初始數據值爲$ duty和$ exact ....同樣,你在什麼時區?你有夏令時嗎? –
我認爲問題在於時區。你在哪個時區工作 – Saty
@saty - 那是我的想法:從字符串算術,'12:00:00' - '12:00:00'會轉換爲12-12給0;然後使用它作爲date()的unix時間戳將調整到定義的時區和夏令時....目前英國目前是+01:00 –