Php 两个时间段之间的差异导致错误
我有这种情况,我想计算一个员工的迟到时间,要得到迟到时间,我需要减去时间,得到一个员工迟到的分钟/小时 假设是。。我有以下代码:Php 两个时间段之间的差异导致错误,php,time,timestamp,date-difference,Php,Time,Timestamp,Date Difference,我有这种情况,我想计算一个员工的迟到时间,要得到迟到时间,我需要减去时间,得到一个员工迟到的分钟/小时 假设是。。我有以下代码: $time = strtotime($time_in); $late_time = date("H:i", strtotime('+15 minutes', $time)); if(date("H:i:s",strtotime($time_duty[0]->time)) > $late_time ) {
$time = strtotime($time_in);
$late_time = date("H:i", strtotime('+15 minutes', $time));
if(date("H:i:s",strtotime($time_duty[0]->time)) > $late_time ) {
$time_difference = (date("H:i:s",strtotime($time_duty[0]->time)) - $late_time)/60;
print_r($time_difference);
}
然后我遇到了错误
消息:遇到格式不正确的数值请尝试以下操作:
$time = strtotime($time_in);
$datetime1 = new DateTime(date("H:i:s",strtotime($time_duty[0]->time)));
$datetime2 = new DateTime(date("H:i:s", strtotime('+15 minutes', $time)));
$interval = $datetime1->diff($datetime2);
echo $interval->format('H:i:s');
试试这个:
$time = strtotime($time_in);
$datetime1 = new DateTime(date("H:i:s",strtotime($time_duty[0]->time)));
$datetime2 = new DateTime(date("H:i:s", strtotime('+15 minutes', $time)));
$interval = $datetime1->diff($datetime2);
echo $interval->format('H:i:s');
你收到这封信是因为这条线
$time_difference = (date("H:i:s",strtotime($time_duty[0]->time)) - $late_time)/60;
截至,当您尝试对非格式良好的字符串(如日期)执行算术运算时,您将收到此通知
$time_difference = "2019-09-14" - "2019-09-13"; // <--- Notice as of PHP7.1
如果有机会的话,我更喜欢使用时间戳创建DateTime对象,因为它可以将您从地狱般的时区中解放出来。请从列表中查看此注释
当
$time参数是UNIX时间戳(例如@946684800)或
指定时区(例如2010-01-28:15:00:00+02:00)
你收到这封信是因为这条线
$time_difference = (date("H:i:s",strtotime($time_duty[0]->time)) - $late_time)/60;
截至,当您尝试对非格式良好的字符串(如日期)执行算术运算时,您将收到此通知
$time_difference = "2019-09-14" - "2019-09-13"; // <--- Notice as of PHP7.1
如果有机会的话,我更喜欢使用时间戳创建DateTime对象,因为它可以将您从地狱般的时区中解放出来。请从列表中查看此注释
当
$time参数是UNIX时间戳(例如@946684800)或
指定时区(例如2010-01-28:15:00:00+02:00)
您正在减去格式不正确的数值
H:i
您正在减去格式不正确的数值H:i
很好的解决方案,请投赞成票。但他只是计算了一个时间范围,所以这不会在实际中产生任何影响。@SergheileOnneco谢谢,伙计,这实际上不是一个解决方案,我只是解释了错误的原因,你的回答提供了解决方案“所以这不会在实际中产生任何影响”。。。我没有得到@SergheiLeonenco,这将按预期工作,这只是创建对象的一种不同方式,一旦创建了对象,您就可以使用->diff
,就像您在代码中所做的那样。我同意,您的建议很容易阅读,而且效果也很好。这不是新的日期时间($time\u duty[0]->time)代码>与时间戳相同?很好的解决方案,请投票。但他只是计算了一个时间范围,所以这不会在实际中产生任何影响。@SergheileOnneco谢谢,伙计,这实际上不是一个解决方案,我只是解释了错误的原因,你的回答提供了解决方案“所以这不会在实际中产生任何影响”。。。我没有得到@SergheiLeonenco,这将按预期工作,这只是创建对象的一种不同方式,一旦创建了对象,您就可以使用->diff
,就像您在代码中所做的那样。我同意,您的建议很容易阅读,而且效果也很好。这不是新的日期时间($time\u duty[0]->time)代码>与时间戳相同?