Php 如果小时大于24小时,两个时间戳之间的差异
我只是编辑我的问题 我有两种时间格式,我想知道它们之间的区别 比如说Php 如果小时大于24小时,两个时间戳之间的差异,php,date,timestamp,strtotime,mktime,Php,Date,Timestamp,Strtotime,Mktime,我只是编辑我的问题 我有两种时间格式,我想知道它们之间的区别 比如说 $time1 = new DateTime('09:00:59'); $time2 = new DateTime('100:30:00'); $interval = $time1->diff($time2); echo $interval->format('%h:%i:%s second(s)'); ?> 如果我增加时间,它在24小时以下工作正常,显示出致命错误2 $time2=新日期时间
$time1 = new DateTime('09:00:59');
$time2 = new DateTime('100:30:00');
$interval = $time1->diff($time2);
echo $interval->format('%h:%i:%s second(s)');
?>
如果我增加时间,它在24小时以下工作正常,显示出致命错误2
$time2=新日期时间('100:30:00')
致命错误:未捕获异常“exception”,消息为“DateTime::uu构造()[DateTime.-construct]:未能分析位置0(1)处的时间字符串(100:30:00):D:\xampp\htdocs\DateTime中的意外字符。php:3堆栈跟踪:35; 0 D:\xampp\htdocs\DateTime.php(3):DateTime->u构造('100:30:00')#1{main}在第3行的D:\xampp\htdocs\datetime.php中抛出
有没有其他方法,或者我可以编辑相同的我已经尝试了很多,但没有找到解决方案
我只想用任何方法得到差异
谢谢我希望这会有所帮助
$time1 = '10:30:00';
$time2 = '100:00:00';
function hms2sec ($hms) {
list($h, $m, $s) = explode (":", $hms);
$seconds = 0;
$seconds += (intval($h) * 3600);
$seconds += (intval($m) * 60);
$seconds += (intval($s));
return $seconds;
}
$ts1=hms2sec($time2);
$ts2=hms2sec($time1);
$time_diff = $ts1-$ts2;
function seconds($seconds) {
// CONVERT TO HH:MM:SS
$hours = floor($seconds/3600);
$remainder_1 = ($seconds % 3600);
$minutes = floor($remainder_1 / 60);
$seconds = ($remainder_1 % 60);
// PREP THE VALUES
if(strlen($hours) == 1) {
$hours = "0".$hours;
}
if(strlen($minutes) == 1) {
$minutes = "0".$minutes;
}
if(strlen($seconds) == 1) {
$seconds = "0".$seconds;
}
return $hours.":".$minutes.":".$seconds;
}
echo $final_diff=seconds($time_diff);
我希望这能有所帮助
$time1 = '10:30:00';
$time2 = '100:00:00';
function hms2sec ($hms) {
list($h, $m, $s) = explode (":", $hms);
$seconds = 0;
$seconds += (intval($h) * 3600);
$seconds += (intval($m) * 60);
$seconds += (intval($s));
return $seconds;
}
$ts1=hms2sec($time2);
$ts2=hms2sec($time1);
$time_diff = $ts1-$ts2;
function seconds($seconds) {
// CONVERT TO HH:MM:SS
$hours = floor($seconds/3600);
$remainder_1 = ($seconds % 3600);
$minutes = floor($remainder_1 / 60);
$seconds = ($remainder_1 % 60);
// PREP THE VALUES
if(strlen($hours) == 1) {
$hours = "0".$hours;
}
if(strlen($minutes) == 1) {
$minutes = "0".$minutes;
}
if(strlen($seconds) == 1) {
$seconds = "0".$seconds;
}
return $hours.":".$minutes.":".$seconds;
}
echo $final_diff=seconds($time_diff);
我希望这能有所帮助
$time1 = '10:30:00';
$time2 = '100:00:00';
function hms2sec ($hms) {
list($h, $m, $s) = explode (":", $hms);
$seconds = 0;
$seconds += (intval($h) * 3600);
$seconds += (intval($m) * 60);
$seconds += (intval($s));
return $seconds;
}
$ts1=hms2sec($time2);
$ts2=hms2sec($time1);
$time_diff = $ts1-$ts2;
function seconds($seconds) {
// CONVERT TO HH:MM:SS
$hours = floor($seconds/3600);
$remainder_1 = ($seconds % 3600);
$minutes = floor($remainder_1 / 60);
$seconds = ($remainder_1 % 60);
// PREP THE VALUES
if(strlen($hours) == 1) {
$hours = "0".$hours;
}
if(strlen($minutes) == 1) {
$minutes = "0".$minutes;
}
if(strlen($seconds) == 1) {
$seconds = "0".$seconds;
}
return $hours.":".$minutes.":".$seconds;
}
echo $final_diff=seconds($time_diff);
我希望这能有所帮助
$time1 = '10:30:00';
$time2 = '100:00:00';
function hms2sec ($hms) {
list($h, $m, $s) = explode (":", $hms);
$seconds = 0;
$seconds += (intval($h) * 3600);
$seconds += (intval($m) * 60);
$seconds += (intval($s));
return $seconds;
}
$ts1=hms2sec($time2);
$ts2=hms2sec($time1);
$time_diff = $ts1-$ts2;
function seconds($seconds) {
// CONVERT TO HH:MM:SS
$hours = floor($seconds/3600);
$remainder_1 = ($seconds % 3600);
$minutes = floor($remainder_1 / 60);
$seconds = ($remainder_1 % 60);
// PREP THE VALUES
if(strlen($hours) == 1) {
$hours = "0".$hours;
}
if(strlen($minutes) == 1) {
$minutes = "0".$minutes;
}
if(strlen($seconds) == 1) {
$seconds = "0".$seconds;
}
return $hours.":".$minutes.":".$seconds;
}
echo $final_diff=seconds($time_diff);
一种方法是:
$time2='100:00:00';
$time1='10:30:00';
列表($hours,$minutes,$seconds)=爆炸(“:”,$time2);
$interval2=$hours*3600+$minutes*60+$seconds;
列表($hours,$minutes,$seconds)=爆炸(“:”,$time1);
$interval1=$hours*3600+$minutes*60+$seconds;
$diff=$interval2-$interval1;
回声地板($diff/3600)。“:”。
stru垫(地板($diff/60)%60,2,'0'):'。
str_pad($diff%60,2,'0');
输出:
89:30:00
89:30:00
下面是一个演示方法:
$time2='100:00:00';
$time1='10:30:00';
列表($hours,$minutes,$seconds)=爆炸(“:”,$time2);
$interval2=$hours*3600+$minutes*60+$seconds;
列表($hours,$minutes,$seconds)=爆炸(“:”,$time1);
$interval1=$hours*3600+$minutes*60+$seconds;
$diff=$interval2-$interval1;
回声地板($diff/3600)。“:”。
stru垫(地板($diff/60)%60,2,'0'):'。
str_pad($diff%60,2,'0');
输出:
89:30:00
89:30:00
下面是一个演示方法:
$time2='100:00:00';
$time1='10:30:00';
列表($hours,$minutes,$seconds)=爆炸(“:”,$time2);
$interval2=$hours*3600+$minutes*60+$seconds;
列表($hours,$minutes,$seconds)=爆炸(“:”,$time1);
$interval1=$hours*3600+$minutes*60+$seconds;
$diff=$interval2-$interval1;
回声地板($diff/3600)。“:”。
stru垫(地板($diff/60)%60,2,'0'):'。
str_pad($diff%60,2,'0');
输出:
89:30:00
89:30:00
下面是一个演示方法:
$time2='100:00:00';
$time1='10:30:00';
列表($hours,$minutes,$seconds)=爆炸(“:”,$time2);
$interval2=$hours*3600+$minutes*60+$seconds;
列表($hours,$minutes,$seconds)=爆炸(“:”,$time1);
$interval1=$hours*3600+$minutes*60+$seconds;
$diff=$interval2-$interval1;
回声地板($diff/3600)。“:”。
stru垫(地板($diff/60)%60,2,'0'):'。
str_pad($diff%60,2,'0');
输出:
89:30:00
89:30:00
这是一个演示,因为我没有足够的“声誉”在所选答案中添加评论。我想添加一条消息,指出它的一个缺陷
如果您尝试使用以下参数:
$time2 = '10:15:00';
$time1 = '10:10:00';
您将得到以下错误结果:
0:50:00
要更正此问题,您需要在处理分钟的STR_PAD_中添加STR_PAD_,如下所示:
str_pad(floor($diff / 60) % 60, 2, '0', STR_PAD_LEFT) . ':' .
因为我没有足够的“声誉”在所选答案中添加评论。我想添加一条消息,指出它的一个缺陷
如果您尝试使用以下参数:
$time2 = '10:15:00';
$time1 = '10:10:00';
您将得到以下错误结果:
0:50:00
要更正此问题,您需要在处理分钟的STR_PAD_中添加STR_PAD_,如下所示:
str_pad(floor($diff / 60) % 60, 2, '0', STR_PAD_LEFT) . ':' .
因为我没有足够的“声誉”在所选答案中添加评论。我想添加一条消息,指出它的一个缺陷
如果您尝试使用以下参数:
$time2 = '10:15:00';
$time1 = '10:10:00';
您将得到以下错误结果:
0:50:00
要更正此问题,您需要在处理分钟的STR_PAD_中添加STR_PAD_,如下所示:
str_pad(floor($diff / 60) % 60, 2, '0', STR_PAD_LEFT) . ':' .
因为我没有足够的“声誉”在所选答案中添加评论。我想添加一条消息,指出它的一个缺陷
如果您尝试使用以下参数:
$time2 = '10:15:00';
$time1 = '10:10:00';
您将得到以下错误结果:
0:50:00
要更正此问题,您需要在处理分钟的STR_PAD_中添加STR_PAD_,如下所示:
str_pad(floor($diff / 60) % 60, 2, '0', STR_PAD_LEFT) . ':' .
你能发布你的相关代码吗您已经标记了strtotime,但这是时间戳,所以24是上限,因为这是午夜12点,所以您需要包括天?您必须包括日期,只要使用完整的时间戳,就可以从时间戳中减去时间戳,而无需进行任何转换,这样php就可以根据UNIX epoc 1/1/1970确定数值。检查是否可以发布相关代码?-您已经标记了strtotime,但这是时间戳,所以24是上限,因为这是午夜12点,所以您需要包括天?您必须包括日期,只要使用完整的时间戳,就可以从时间戳中减去时间戳,而无需进行任何转换,这样php就可以根据UNIX epoc 1/1/1970确定数值。检查是否可以发布相关代码?-您已经标记了strtotime,但这是时间戳,所以24是上限,因为这是午夜12点,所以您需要包括天?您必须包括日期,只要使用完整的时间戳,就可以从时间戳中减去时间戳,而无需进行任何转换,这样php就可以根据UNIX epoc 1/1/1970确定数值。检查是否可以发布相关代码?-您已经标记了strtotime,但这是时间戳,所以24是上限,因为这是午夜12点,所以您需要包括天?您必须包括日期,只要使用完整的时间戳,就可以从时间戳中减去时间戳而不进行任何转换,这样php就可以根据UNIX epoc 1/1/1970.C确定数值