论坛日期 基于 if 语句匹配 1 of 12 的响应等于或大于比较(参数)

Posted

技术标签:

【中文标题】论坛日期 基于 if 语句匹配 1 of 12 的响应等于或大于比较(参数)【英文标题】:Forum date Response based on if statement matches 1 of 12 equal to or greater than comparisons (arguements) 【发布时间】:2022-01-23 19:48:58 【问题描述】:

好的,所以我正在处理一个论坛提交 php 代码,让我们调用文件名 index.html,它在下面的代码中首先提交论坛日期。

<center>
  <form name="birthDay" method="post" action="months.php">
    <input type="date" id="birthDay" name="birthDay"><br>
    <input type="submit" name="Submit" value="send"><br>
  </form>
</center>

php 文件 months.php 将采用变量生日并将其提交到月份 php 文件。像这样。

<?php 
if(isset($_POST['birthDay'])) 
  $link = $_POST['birthDay']; //Month for Jan 
  $janBegin = date("01-01"); 
  $janEnd = date("01-31");  

  if ($birthDate >= $janBegin || $birthDate <= $janEnd)  
    echo "Your birthday month is janurary"; 
   
?>

依此类推,基于所有 12 个月。提交论坛时。

我的问题是如何为变量“生日”创建列表以与所有月份的开始和结束日期进行比较?

我查看了 if、elseif 和 swith-case 语句,但没有什么不能产生预期的结果?我可能做错了什么。但无法查明我的代码中的错误。

这就是把我带到这里的原因。

非常感谢您对此的任何帮助。谢谢

根据 ADyson 的要求

这段代码只是我想要做的一个例子。我在下面的 cmets 中已经说明,开始和结束日期将设置为随机变量。总变量设置为 12。这就是我选择使用月份的开始日期和结束日期的原因。 ADyson 我相信这个想法更字面化了然后我希望。

基本上代码看起来像这样。

<?php 
$startdate1 = date("01/20") 
$enddate1=date("02/27") 
if ($bday >= $startdate1 && $bday <= $enddate1) 
  echo "response #1";

我也一直在对此进行更多研究,并发现了一个使用 if 和 elseif 语句的代码 sn-p,我发现它可以工作。但是还是遇到了一个问题。

当输入日期并循环代码时,它匹配错误的响应。所以说输入08/27 (m-d) 的日期它会停止并匹配

$option11Begin = date("11/25"); 
$option11End = date("12/23"); 

比较

 elseif ($bday >= $option11Begin && $bday <= $option11End) 

任何想法都是为什么会发生这种情况。谢谢。

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

您无需比较开始日期和结束日期或使用大量 switch 语句。只需将日期输入 PHP 的内置 DateTime 类,该类专门处理日期,然后从结果对象中仅输出月份名称。

if(isset($_POST['birthDay'])) 
  $bday = new DateTime($_POST['birthDay']);
  echo "Your birthday month is ".$bday->format("F");

模拟:http://sandbox.onlinephpfunctions.com/code/f4b8730927927adf976dfb103c58ba132ca9217f

文档链接:https://www.php.net/manual/en/class.datetime.php

此解决方案适用于一个月中的任何一天。它解析日期字符串,然后从生成的 DateTime 对象中,您始终可以获取月份值 - 或您想要的任何其他信息,或者与其他 DateTime 对象进行其他比较,或者您需要的任何内容。这比任何类型的字符串比较都更容易、更可靠

【讨论】:

第一个响应的 Ty。 &这是一个很好的答案,但它确实没有给出我正在寻找的洞察力。我基于我的问题和一个我不愿意在网上真正分享的项目代码。这个代码示例与我能想到的真实项目一样接近。但我需要比较 12 个项目列表中的两个日期来比较输入的日期。如示例所示,在比较 12 项中的每一项时,我有一个等于或大于/小于一个日期。以产生预期的结果。我可能想要考虑的任何想法来完成这项工作。谢谢。 But I will need a comparison of two dates of a list of 12 items to compare the entered date...你为什么需要它?我的代码以更简单的方式为您提供完全相同的结果。您是否运行了我提供的演示,并看到它有效?我无法想象为什么您更喜欢更复杂的解决方案。是否还有一些您没有提到的额外要求? 问:为什么我需要这样做?答:因为比较的日期实际上并不是本月的第一天和最后一天。因此,重申一下-您是对的,您提供的代码确实适用于此,我确实对其进行了测试。但就像我之前提到的,这是我正在处理的项目代码的更改,因此比较输入的日期以设置开始和结束日期以重现所需响应的基础。设置日期的实际日期更改可能是我不确定提及的附加要求。因此,泄露了项目的核心机密。我只需要比较 12 种可能性即可得到答案 the dates compared are not actually going to be the first and last of the month....没关系,我的解决方案适用于一个月中的任何一天——试试吧。它解析日期字符串,然后从生成的 DateTime 对象中您始终可以获取月份值 - 或您想要的任何其他信息,或者与其他 DateTime 对象进行其他比较,或者您需要的任何内容。这比任何类型的字符串比较都更容易、更可靠。 正如我之前所说,我必须使用两个单独的日期。对于我将按输入日期的结果检索的 12 个响应中的每一个,这些日期都将不同。您的代码仅适用于将时间日期匹配设置为系统日期和时间?您能否举一个具有两个不同设定日期的代码示例?如果我的问题不够清楚,无法解释我想要达到的目标,我深表歉意。

以上是关于论坛日期 基于 if 语句匹配 1 of 12 的响应等于或大于比较(参数)的主要内容,如果未能解决你的问题,请参考以下文章

使用日期在Excel中嵌套的IF语句

用java来判断当前日期是不是在 每月第一周周一及第三周周一,周一12:00至次日24:00中

在Oracle使用sql语句中如何插入日期格式的数据

使用单元格格式值的 IF 语句

12.scala的模式匹配

从多个表中提取时 PHP while 循环和 if 语句问题