如何用PHPH格式编程半小时?

如何用PHPH格式编程半小时?,php,datetime-format,Php,Datetime Format,我在stackoverflow和google上搜索了一个类似的问题,但没有找到一个适合我的问题的答案。我仍然很抱歉,如果我让一个重复的问题过去了。请你指点我一下,我会通知你的 我的问题是我需要在php中编程一个H格式的时间表,但现在我需要添加半个小时,不知道怎么做。这是我的代码,您可以更好地理解我的意思: $time = (int)date('H'); if($time>=24 && $time<6) { //some code... } else if($

我在stackoverflow和google上搜索了一个类似的问题,但没有找到一个适合我的问题的答案。我仍然很抱歉,如果我让一个重复的问题过去了。请你指点我一下,我会通知你的

我的问题是我需要在php中编程一个H格式的时间表,但现在我需要添加半个小时,不知道怎么做。这是我的代码,您可以更好地理解我的意思:

$time = (int)date('H');

if($time>=24 && $time<6)
{
    //some code...
}
else if($time>=6 && $time<18) //My problem is here, I need it to be 18:30
{
    //some other code...
}
//code goes on for rest of hours of the day
$time=(int)日期('H');

如果($time>=24&&$time=6&&$time=6:00&&$timeH仅返回小时。您需要使用$minutes=date('i')获取单独的分钟值。使用

if($time>=6 && ($time<19 && $minutes < 30) )

如果($time>=6&&($time=6&&($time您正在将
$time
强制转换为整数,这就是它不起作用的原因。
尝试:


因此,在$time中,期望值从
00:00
23:59
(例如
24:00
)。

如果要直接比较半小时时间,必须将
hh:mm
转换为数字格式,例如

# 6:45
$hours = 6 + (45 /60); # represent as fractional hours
$minutes = (6 * 60) + 45; # represent in minutes only.
然后你可以简单地进行直接比较:

#    6am            6:30pm
if (($hours > 6) && ($hours <= 18.5))
if (($minutes > 360) && ($minutes < 1125))
#上午6点下午6:30
如果($hours>6)和($hours 360)和($minutes<1125))


您还必须从date对象中获取分钟数,因为您不能将半小时与只返回完整小时数的值进行比较。@adeneo很抱歉,我不明白。您的意思是更改$time=(int)date('H:I'),我这样做了,但在条件中出现语法错误。使用
date(“HH:ii”)
返回小时和分钟部分两次(例如,它将返回
0606:3030
而不是
06:30
。使用
日期(“H:i”)<代码> >谢谢!谢谢你的回答!在你的代码中,这个时间会失败。关于代码> 7:45 ?@ MarcB,你是绝对正确的,我没有注意。我试过了,它工作了1830。@ MarcB你能解释这个问题吗?@ ANT100:考虑7:45。han 6,但45也大于30,所以比较失败,即使7:45在6:00和19:30之间。谢谢你的回答,我不知道我必须在Coma之间加上“24:00”。我的问题是,当我在整个代码中以这种方式替换它时,由于某种原因,它不起作用,也无法识别时间表(我没有编写原始代码)。你知道有什么方法可以在不更改其余代码的情况下添加半个小时吗?(类似于下面juuga的回答)。我想你指的是引号(
)。它基本上是一个字符串,所以你必须将它括在引号中(单引号或双引号)如果这个答案解决了你的问题,请考虑将它标记为“接受”:无论如何,这将失败。你正在比较字符串,所以<代码> 11:00 <代码>将被评估为小于<代码> 6:00 < /代码>,因为<代码> '1' < 6”< /代码>。@ Marc B:固定了。THX为头。(第二次我感到尴尬今天:P)很抱歉,这仍然不起作用,当我尝试它的时候,网站的时间表被搞混了。我可以把18:30写成18.5?这太有用了,我想到了,但不知道我能做到。很抱歉,我问这个问题觉得很傻,我如何转换日期('H'))变成数字格式?刚刚意识到它不起作用。改用
G
。这是0->23而不是00->23格式。PHp将根据需要自动转换为int,只要它看起来像int。当我写18.5时,它不会被识别为半小时。我将继续尝试,看看是否能找到错误
if( $time>=6 && ($time<18 || ($time == 18 && $minutes < 30)) )
$time = date('H:i');     // <-- without the "(int)" part

if (($time >= "00:00") && ($time < "06:00")) {
    //some code...
} else if (($time >= "06:00") && ($time < "18:30") {
    //some other code...
} else {
    //code goes on for rest of hours of the day
}
#    format
# character   Description                                    Returned values 
#         H   24-hour format of an hour with leading zeros   00 through 23
#         i   Minutes with leading zeros                     00 to 59
# 6:45
$hours = 6 + (45 /60); # represent as fractional hours
$minutes = (6 * 60) + 45; # represent in minutes only.
#    6am            6:30pm
if (($hours > 6) && ($hours <= 18.5))
if (($minutes > 360) && ($minutes < 1125))