将24小时时间转换为秒的最佳方法是什么,以便可以用于比较if语句..
function HourMinuteToDecimal($hour_minute) {
$t = explode(':', $hour_minute);
return $t[0] * 60 + $t[1];
}
echo HourMinuteToDecimal("23:30");
return 1410
如果您尝试将午夜时间(00:00)转换为秒,则无效。这是什么解决方案?
<00> 00:00,00:30,01:00,01:30等if (HourMinuteToDecimal("01:30") > HourMinuteToDecimal("23:30")) { .. }
这不起作用。
答案 0 :(得分:10)
PHP5.3
$formattedTime = '00:01:38';
$seconds = strtotime('1970-01-01 ' . $formattedTime . 'GMT')
答案 1 :(得分:6)
转换功能:
function hoursToSecods ($hour) { // $hour must be a string type: "HH:mm:ss"
$parse = array();
if (!preg_match ('#^(?<hours>[\d]{2}):(?<mins>[\d]{2}):(?<secs>[\d]{2})$#',$hour,$parse)) {
// Throw error, exception, etc
throw new RuntimeException ("Hour Format not valid");
}
return (int) $parse['hours'] * 3600 + (int) $parse['mins'] * 60 + (int) $parse['secs'];
}
动态写入,未经测试:-P
所以,您可以使用strtotime转换unix时间戳和隔离区中的格式日期,使用标准运算符(==&lt;&gt;&gt; =&lt; =!=等)ex:
$t1 = "23:40:12";
$t2 = "17:53:04";
$h1 = strtotime("0000-00-00 $t1");
$h2 = strtotime("0000-00-00 $t2");
$h1 == $h2; // if are equals
$h1 > $h2; // if h1 is mayor at h2
$h1-$h2; // dieference in seconds, etc.
等。
答案 2 :(得分:4)
你似乎在问矛盾的事情。
HH:MM
中的时间转换为秒。如果您想在没有约会的情况下允许HourMinuteToDecimal("01:30") > HourMinuteToDecimal("23:30")
为真,那么,任何比较都会返回true
。
如果要正确执行此操作,请在PHP中包含日期(YYYY-MM-DD HH:MM:SS
)并使用strtotime
以获取自UNIX纪元以来的秒数。
此外,您的函数返回分钟,而不是秒。
答案 3 :(得分:0)
您可以使用标准time
,<
,>
运算符比较==
类型的对象。使用strtotime
将字符串转换为时间,然后进行比较。