我的交易时间为每周五22:00至4:00。但问题是,在00:00之后,它将转向星期六,我的代码将不再找到交易。
以下是我如何保存优惠:
Array
(
[0] => Array
(
[offerAvailableOn] => 5
[open] => 22:00
[close] => 04:00
)
}
这是我查询它的代码:
$today = date('N');
$timeNow = date('H:i');
但是当今天的星期六是星期六时,它却找不到我的报价。
答案 0 :(得分:2)
您可以将open
和close
变量包含在一周中的某一天。看一下本手册的这个页面:
http://php.net/manual/en/datetime.formats.relative.php
所以open
可以'Friday 22:00'
en close
可以是'Saturday 04:00'
。在PHP中看起来像这样:
$deal = array('open' => 'Friday 22:00',
'close' => 'Saturday 04:00');
echo 'deal open: '.date('Y-m-d H:i:s', strtotime($deal['open'])).'<br>';
echo 'deal close: '.date('Y-m-d H:i:s', strtotime($deal['close']));
对我而言,现在给出:
deal open: 2014-10-24 22:00:00
deal close: 2014-10-18 04:00:00
请注意,交易open
时间比当前时间更长。所以你必须考虑你的if
条件:
$open = strtotime($deal['open']);
$close = strtotime($deal['close']);
$now = time();
$dealIsOn = (($open > $now) && ($close < $now));
一开始可能看起来反直觉,但是正确的。
另请注意,此系统非常灵活。使用相同的代码,您可以选择一个月中的某一天。但是,对于绝对日期,您必须再次检查:
$open = strtotime('2014-10-25 22:00:00');
$close = strtotime('2014-10-26 22:00:00');
$now = time();
$dealIsOn = (($open < $now) && ($close > $now));
所以我会在数组中引入一个标志,指示open
和close
变量是绝对的还是相对的。
答案 1 :(得分:0)
将其更改为两个测试。该优惠服务于周五22:00或之后以及周六4:00或更早时间提供。