PHP If条件介于两次之间

PHP If条件介于两次之间,php,Php,我有一个例子,一个文本框不应该显示在两次之间,例如20和01(24小时制),但它也应该工作,当我选择不显示20和22之间的文本框时 但如果我有: $start = "20"; $end = "01"; $now = date('H'); if($now > $start AND $now < $end) { echo "DONT SHOW THE BOX"; } else { echo "SHOW THE BOX"; } $start=“20”; $end=“01”; $

我有一个例子,一个文本框不应该显示在两次之间,例如20和01(24小时制),但它也应该工作,当我选择不显示20和22之间的文本框时

但如果我有:

$start = "20";
$end = "01";
$now = date('H');

if($now > $start AND $now < $end) {
  echo "DONT SHOW THE BOX";
} else {
  echo "SHOW THE BOX";
}
$start=“20”;
$end=“01”;
$now=日期('H');
如果($now>$start和$now<$end){
回声“不要显示盒子”;
}否则{
回声“显示盒子”;
}
如何转换数字,即使我没有日期也可以使用
mktime()
?因为在该时间范围内,该框应每天激活

您不希望在20:00到01:00之间显示方框

目前,您的逻辑在
if($now>$start和$now<$end)
中有点混乱

如果您希望
$start=20
$end=1
那么
$now
是什么类型的值,可能大于
20
而小于
1

无论
$now
的值是多少,if语句逻辑将始终转到
ELSE

但还有另一种方法可以改变这种逻辑

您希望在02:00到19:00之间显示方框

而不是相反

所以你可以这样做

$start = "20";
$end = "01";
$now = date('H');

if ($now > $end && $now < $start)
{
    echo "SHOW THE BOX";
}
else
{
    echo "DON'T SHOW";
}
您不希望在20:00到01:00之间显示方框

目前,您的逻辑在
if($now>$start和$now<$end)
中有点混乱

如果您希望
$start=20
$end=1
那么
$now
是什么类型的值,可能大于
20
而小于
1

无论
$now
的值是多少,if语句逻辑将始终转到
ELSE

但还有另一种方法可以改变这种逻辑

您希望在02:00到19:00之间显示方框

而不是相反

所以你可以这样做

$start = "20";
$end = "01";
$now = date('H');

if ($now > $end && $now < $start)
{
    echo "SHOW THE BOX";
}
else
{
    echo "DON'T SHOW";
}

代码不是很漂亮,但我想这就是你想要的

define('START_TIME', 6);
define('END_TIME', 1);

$startTime = new DateTime();
$startTime->setTime(START_TIME, 0);

$endTime = clone $startTime;
if (START_TIME > END_TIME) {
    $endTime->modify('+1 day');
}
$endTime->setTime(END_TIME, 0);

$currentTime = new DateTime();

if ($currentTime > $startTime && $currentTime < $endTime) {
    echo 'Show box';
} else {
    echo 'Don\'t show box';
}
定义('START_TIME',6);
定义(“结束时间”,1);
$startTime=新日期时间();
$startTime->setTime(开始时间,0);
$endTime=clone$startTime;
如果(开始时间>结束时间){
$endTime->modify(“+1天”);
}
$endTime->setTime(结束时间,0);
$currentTime=新日期时间();
如果($currentTime>$startTime&$currentTime<$endTime){
回声“显示盒”;
}否则{
回声“不显示框”;
}
您可以更改小时数以决定何时显示/隐藏的开始/结束小时数。如果结束时间低于开始时间,则假定结束时间应为第二天


它可能会被清理一点,但如果是你想要的,我会把它交给你

代码不是很漂亮,但我想这就是你想要的

define('START_TIME', 6);
define('END_TIME', 1);

$startTime = new DateTime();
$startTime->setTime(START_TIME, 0);

$endTime = clone $startTime;
if (START_TIME > END_TIME) {
    $endTime->modify('+1 day');
}
$endTime->setTime(END_TIME, 0);

$currentTime = new DateTime();

if ($currentTime > $startTime && $currentTime < $endTime) {
    echo 'Show box';
} else {
    echo 'Don\'t show box';
}
定义('START_TIME',6);
定义(“结束时间”,1);
$startTime=新日期时间();
$startTime->setTime(开始时间,0);
$endTime=clone$startTime;
如果(开始时间>结束时间){
$endTime->modify(“+1天”);
}
$endTime->setTime(结束时间,0);
$currentTime=新日期时间();
如果($currentTime>$startTime&$currentTime<$endTime){
回声“显示盒”;
}否则{
回声“不显示框”;
}
您可以更改小时数以决定何时显示/隐藏的开始/结束小时数。如果结束时间低于开始时间,则假定结束时间应为第二天


它可能会被清理一点,但如果是你想要的,我会把它交给你

您的代码应该可以正常工作。但是你可以像
(int)$start
那样键入它,或者你也可以使用
intval($start)
。嗨,乔兹,是的,代码正在工作,但问题是当它在20到01之间时,我不希望它显示任何内容。如果我在20和01之间测试If函数,它将打印“显示框”,并且应该打印“不显示框”。我会试试你的建议。我明白你的意思。检查答案。你的代码应该可以正常工作。但是你可以像
(int)$start
那样键入它,或者你也可以使用
intval($start)
。嗨,乔兹,是的,代码正在工作,但问题是当它在20到01之间时,我不希望它显示任何内容。如果我在20和01之间测试If函数,它将打印“显示框”,并且应该打印“不显示框”。我会试试你的建议。我明白你的意思。检查答案。这很好,但我的问题是,如果我不想让方框显示在20和22之间,而不是20和01之间,该怎么办?@RasmusKjeldsen,那么你可以像
如果($now>=20&&$now,但这会不会让我回到我开始的地方,所以如果时间再次介于20和01之间,我会再次遇到问题?我真的很喜欢它,所以我只设置一个开始时间和结束时间,无论是晚上还是白天,如果计算出来的话。@RasmusKjeldsen你应该编辑你的问题。我会尽快更新我的答案。@RasmusKjeldsen请检查我的最新答案。顺便说一句,你仍然应该编辑你的问题,因为不清楚你到底想要达到什么。这很好,但我的问题是,如果我不想让方框显示在20到22之间,而不是20到01之间,你可以像
如果($now>=20&&$now,但这会不会让我回到我开始的地方,所以如果时间再次介于20和01之间,我会再次遇到问题?我真的很喜欢它,所以我只设置一个开始时间和结束时间,无论是晚上还是白天,如果计算出来的话。@RasmusKjeldsen你应该编辑你的问题。我会尽快更新我的答案。@RasmusKjeldsen请检查我的最新答案。顺便说一句,你仍然应该编辑你的问题,因为它不清楚你实际上想要实现什么。