好的,一个非常简单的问题,但我太厚了,无法弄明白。我希望两次得到区别。例如,“1:07”(1分7秒)和“3:01”(3分1秒)。它只会是几分钟和几秒钟。我一直试图利用这个:
function timeDiff($firstTime,$lastTime)
{
// convert to unix timestamps
$firstTime=strtotime($firstTime);
$lastTime=strtotime($lastTime);
// perform subtraction to get the difference (in seconds) between times
$timeDiff=$lastTime-$firstTime;
// return the difference
return $timeDiff;
}
但我认为我的方向错误了?
感谢您的帮助。
我试过这个:echo timeDiff('1:07','2:30');
我得到了这个输出“4980”
以上是什么?是秒吗?我不知道怎么把它变成“1:23”,这就是区别。
谢谢大家,我从这一个帖子中学到了很多东西,特别是。保罗的。它运作得很好,我喜欢防守!
答案 0 :(得分:13)
你不能使用strtotime,因为它会将MM:SS解释为HH:MM - 这就是为什么你获得的值高于预期值。
你可以简单地在你的MM:SS值前加上'00:',使它们看起来像HH:MM:SS。
但请注意,strtotime,如果只给出HH:MM:SS,将为今天提供时间戳,这对于一次性代码来说很好。不要将这种技术用于任何重要的事情,考虑一下,如果你的两次调用strtotime跨越午夜会发生什么!
或者,类似这样的东西会将MM:SS值转换为可以在
上进行算术运算的时间戳function MinSecToSeconds($minsec)
{
if (preg_match('/^(\d+):(\d+)$/', $minsec, $matches))
{
return $matches[1]*60 + $matches[2];
}
else
{
trigger_error("MinSecToSeconds: Bad time format $minsec", E_USER_ERROR);
return 0;
}
}
它比使用爆炸更具防御性,但显示了另一种方法!
答案 1 :(得分:6)
这应该可以给你两次的差异。
$firstTime = '1:07';
$secondTime = '3:01';
list($firstMinutes, $firstSeconds) = explode(':', $firstTime);
list($secondMinutes, $secondSeconds) = explode(':', $secondTime);
$firstSeconds += ($firstMinutes * 60);
$secondSeconds += ($secondMinutes * 60);
$difference = $secondSeconds - $firstSeconds;
答案 2 :(得分:3)
使用找到的代码here,如何自己计算秒数:
<?php
function time_to_sec($time) {
$hours = substr($time, 0, -6);
$minutes = substr($time, -5, 2);
$seconds = substr($time, -2);
return $hours * 3600 + $minutes * 60 + $seconds;
}
function sec_to_time($seconds) {
$hours = floor($seconds / 3600);
$minutes = floor($seconds % 3600 / 60);
$seconds = $seconds % 60;
return sprintf("%d:%02d:%02d", $hours, $minutes, $seconds);
}
function timeDiff($firstTime,$lastTime)
{
// convert to seconds
$firstTime=time_to_sec($firstTime);
$lastTime=time_to_sec($lastTime);
// perform subtraction to get the difference (in seconds) between times
$timeDiff=$lastTime-$firstTime;
// return the difference
return sec_to_time($timeDiff);
}
echo timeDiff("1:07", "3:01");
?>
返回0:01:54
答案 3 :(得分:3)
strtotime函数用于将字符串格式的日期(下至第二个)转换为Unix时间戳样式格式。它不适用于将时间格式的字符串转换为任何内容。看看这两个声明是否有助于你强调任何
//recent php5 for DATE_RFC822
echo date(DATE_RFC822,strtotime('1:07'));
echo date(DATE_RFC822,strtotime('3:01'));
听起来你想要这样的东西
function timeDiff($firstTime,$lastTime)
{
//split minutes and seconds
list($min_one, $sec_one) = preg_split('{:}',$firstTime,2, PREG_SPLIT_NO_EMPTY);
list($min_two, $sec_two) = preg_split('{:}',$lastTime ,2, PREG_SPLIT_NO_EMPTY);
//convert times into seconds
$time_one = $min_one * 60 + $sec_one;
$time_two = $min_two * 60 + $sec_two;
//return times
return $time_two - $time_one;
}
echo timeDiff('1:07','3:10');
答案 4 :(得分:0)
$time1 = date("H:i",strtotime($strtime));
$time2 = date("H:i");
list($hours, $minutes) = explode(':', $time1);
$startTimestamp = mktime($hours, $minutes);
list($hours, $minutes) = explode(':', $time2);
$endTimestamp = mktime($hours, $minutes);
$seconds = $endTimestamp - $startTimestamp;
$minutes = ($seconds / 60) % 60;
$hours = floor($seconds / (60 * 60));