只有一个问题:是否可以比较日期时间格式和时间格式?
我有表employee_attendance
(日期时间类型)和表employee_schedule
(时间类型),这是为了确定员工是否迟到。
请查看我的代码。
$CheckInNew = strtotime('2013-06-05 08:47:53');
$OnDutyTimeNew = strtotime('08:00:00');
if($CheckIn > $OnDutyTimeNew){
// confirming that the employee is late
} else {
// confirming that the employee is NOT late
}
有什么想法吗?
谢谢
答案 0 :(得分:2)
试试这个:
$CheckInNew = date('B',strtotime('2013-06-05 08:47:53'));
$OnDutyTimeNew = date('B',strtotime('08:00:00'));
if ($CheckInNew > $OnDutyTimeNew)
echo 'late!';
else
echo 'early!';
我使用Internet Swatch
时间作为关键字..有关详细信息,请here's the link
<强>更新强> PHPFiddle
答案 1 :(得分:0)
为什么不将时间解析为时间戳,然后只使用函数strtotime进行比较()
答案 2 :(得分:0)
您可以在SQL中执行此操作:
-- checkin is the column with their checkin time
-- scheduled is the column with their scheduled time
SELECT
TIMEDIFF(TIME(checkin), scheduled) AS diff
如果diff
为负数,则表示准时。如果是正数,则他们迟到了
<强>参考强>
答案 3 :(得分:0)
假设您想要与CheckInDateOnly日期的日期进行比较。
您可以通过将日期时间转换为仅日期,并将其添加到OnDutyTime变量来实现此目的。
$checkInDateTime = strtotime('2013-06-05 08:47:53');
$checkInDateOnly = date("Y-m-d", $checkInDateTime);
$OnDutyTimeNewWithSameDateAsCheckIn = strtotime($checkInDateOnly . '08:00:00');
echo ($checkInDateTime > $OnDutyTimeNewWithSameDateAsCheckIn ? "Late" : "Early");
用法示例:PHPFiddle
答案 4 :(得分:0)
由于日期格式包含前导零,因此您只需使用纯字符串比较来比较日期。
$checkInDateTime = '2013-06-05 08:47:53';
$dutyTime = '08:00:00';
if (substr($checkInDateTime, -8) > $dutyTime) {
echo "Late";
} else {
echo "Early";
}
通常,一天分为1,440分钟。 Swatch Internet time
将一天划分为1000天。因此1拍= 1.44分钟。使用Swatch Internet time
来比较正常时间是不准确的,因为它不包括秒并且存在微小错误(至少这是我所相信的)。