将时间转换为秒

时间:2011-05-18 16:07:58

标签: php time

将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")) { .. } 

这不起作用。

4 个答案:

答案 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将字符串转换为时间,然后进行比较。