处理开放时间和结束时间

时间:2011-05-18 11:48:52

标签: php if-statement

假设商店在13:00开门,但客户可以允许在16:00(标准时间)之后下订单

if语句似乎没有按预期正常工作,如何解决?

代码:

if ((date('H:i') >= '16:00') && ($data[$key]['opentime'] >= '16:00')) {
    $data[$key]['open'] = 1;
} else {
    $data[$key]['open'] = 0;
}

可能的操作:

$data[$key]['opentime']
// Opentime = 12:30
// Opentime = 14:00
// Opentime = 16:00
// Opentime = 16:30
// Opentime = 17:00

客户也无法在23:30之后下订单,但应与$data[$key]['closetime']联系(例如:20:00,21:00)

3 个答案:

答案 0 :(得分:4)

PHP不知道'10:00'是时间。对于PHP,'10:00'只是文本。

就像询问PHP'abcfg'是否大于'jg'。

如果您知道自己只会处理几个小时,只需使用一个数字代表一小时。您的代码如下:

$h1 = (int) date('H');
$h2 = (int) $data[$key]['opentime']; // anything after ':' is ignored
if (($h1 >= 16) && ($h2 >= 16)) {
    $data[$key]['open'] = 1;
} else {
    $data[$key]['open'] = 0;
}

答案 1 :(得分:3)

好吧,也许这个小功能会帮助你:

function HourMinuteToDecimal($hour_minute)
{
    $t = explode(':', $hour_minute);
    return $t[0]*60+$t[1];
}

编辑: 如果我理解你的代码逻辑是正确的,那么:

if (HourMinuteToDecimal($data[$key]['opentime']) > HourMinuteToDecimal(date('H:i'))) {
    $data[$key]['open'] = 1;
} else {
    $data[$key]['open'] = 0;
}

答案 2 :(得分:1)

你应该将字符串'16:00'转换为日期(而不是将实际日期转换为字符串)并进行2个日期值之间的比较。

相关问题