两次之间的差异导致错误
Difference between two time resulting an error
我有这种情况,我想计算一个员工的迟到时间并得到迟到时间,我需要减去时间来得到一个员工的minute/hour迟到时间。
假设是..我有这个代码:
$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_difference = (date("H:i:s",strtotime($time_duty[0]->time)) - $late_time)/60;
从 PHP 7.1 开始,当您尝试对格式不正确的字符串(例如您的日期)进行算术运算时,您会收到此通知
$time_difference = "2019-09-14" - "2019-09-13"; // <--- Notice as of PHP7.1
你为什么要像这样减去日期字符串?您应该按照先前答案的建议使用 rich class DateTime() 来计算差异。您也可以通过这种方式创建对象
$datetime1 = new DateTime( "@" . strtotime($time_duty[0]->time));
$datetime2 = new DateTime( "@" . strtotime('+15 minutes', $time));
如果有机会,我更喜欢使用时间戳创建 DateTime 对象,因为它会让您摆脱时区的困扰。从 manual
查看此注释
The $timezone parameter and the current timezone are ignored when the
$time parameter either is a UNIX timestamp (e.g. @946684800) or
specifies a timezone (e.g. 2010-01-28T15:00:00+02:00).
我有这种情况,我想计算一个员工的迟到时间并得到迟到时间,我需要减去时间来得到一个员工的minute/hour迟到时间。
假设是..我有这个代码:
$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_difference = (date("H:i:s",strtotime($time_duty[0]->time)) - $late_time)/60;
从 PHP 7.1 开始,当您尝试对格式不正确的字符串(例如您的日期)进行算术运算时,您会收到此通知
$time_difference = "2019-09-14" - "2019-09-13"; // <--- Notice as of PHP7.1
你为什么要像这样减去日期字符串?您应该按照先前答案的建议使用 rich class DateTime() 来计算差异。您也可以通过这种方式创建对象
$datetime1 = new DateTime( "@" . strtotime($time_duty[0]->time));
$datetime2 = new DateTime( "@" . strtotime('+15 minutes', $time));
如果有机会,我更喜欢使用时间戳创建 DateTime 对象,因为它会让您摆脱时区的困扰。从 manual
查看此注释The $timezone parameter and the current timezone are ignored when the $time parameter either is a UNIX timestamp (e.g. @946684800) or specifies a timezone (e.g. 2010-01-28T15:00:00+02:00).