Php 将时间转换为秒

Php 将时间转换为秒,php,time,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、

将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:30、01:00、01:30等

if (HourMinuteToDecimal("01:30") > HourMinuteToDecimal("23:30")) { .. } 

这将不起作用。

您可以使用标准的
==
运算符比较
时间类型的对象。使用strotime
将字符串转换为时间,然后进行比较。

您提出的问题似乎相互矛盾

  • 您想将
    HH:MM
    中的时间转换为秒
  • 但是你想“比较”不同时间的结果,就好像他们有日期一样
如果希望允许
HourMinuteToDecimal(“01:30”)>HourMinuteToDecimal(“23:30”)
为true而不带日期,那么,任何比较都将返回
true

如果要正确执行此操作,请包括日期(
YYYY-MM-DD HH:MM:SS
),并在PHP中使用
strotime
获取自UNIX纪元以来的秒数


此外,函数返回的是分钟,而不是秒。

要转换函数:

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'];

}
等等

PHP5.3

$formattedTime = '00:01:38';
$seconds = strtotime('1970-01-01 ' . $formattedTime . 'GMT')

不确定时间类型的对象是什么意思。时间使用“时间”字段类型存储在数据库中。17:00:00、178:00:00、00:00:00、01:00:00等从数据库加载时间值时,它们将是字符串。使用
strotime
将这些字符串转换为时间。我认为我们不应该在其中加入UNIX时间戳。我们不是在讨论日期。当你说转换“00:00”不起作用时,你是什么意思?结果是零秒,但这是正确的,不是吗?如果你想让00:00的意思是24小时而不是零小时,那么你需要把它变成一个特例。。。像什么?我有这样的代码:if(HourMinuteToDecimal(“01:30”)>HourMinuteToDecimal(“23:30”){..}这不会像预期的那样工作。。如何解决这个问题?@user622378:为了解决“问题”,你必须说明问题是什么。你说“这行不通”和“那行不通”,但不要继续说为什么。我不认为这里有什么问题。托马拉克·盖雷特卡尔,我不知道该怎么解释这个问题。我想00:00是指24小时。HourMinuteToDecimal函数需要更新,我想可以处理它,但我不知道如何处理。HourMinuteToDecimal函数只能在没有12小时时间的情况下工作。如何包含YYYY-MM-DD?我已经有8000多行没有日期的时间了。那么23:30应该是2011-05-18 23:30:30,00:00是2011-05-19 00:00:00?@user622378:您的代码如何猜测时间是从哪一天开始的?或者您打算使用“现在”作为轴心点吗?例如:$nowTime=HourMinuteToDecimal(date('H:i'))$OpenTime=HourMinuteToDecimal($data['Result'][$key]['OpenTime']);如果($nowTime>$OpenTime){..}它可以工作,但当时间超过00时不工作:00@user622378:这并不能回答我的问题。@LightnessRacesinOrbit,如果日期无关紧要,这怎么办?或者如果日期始终需要为当前日期?例如,我的公司每天8:00开门,20:00关门。如果时间在8:00:00之前或20:00:00之后,我想隐藏某个链接(实时文本聊天链接)。我想我们可以尝试将当前日期from date()存储在一个变量中,并将其与时间连接起来,以
YYYY-MM-DD HH:MM:SS
格式….$t1=hoursToSecods(“00:00:00”);这是行不通的。00:00:00可能是晚上12点,但如果你读了问题;“将24小时时间转换为秒的最佳方式是什么,以便它可以用于比较if语句…”00:00:00是一天过去的0秒。
$formattedTime = '00:01:38';
$seconds = strtotime('1970-01-01 ' . $formattedTime . 'GMT')