php - 找出日期是否在两个日期之间,忽略年份

标签 php date

我需要确定一个日期(月和日)是否在另外两个月/日之间。

我在这篇文章中附上了一张图片,描述了我正在尝试做的事情。基本上,示例“当前日期”以红色突出显示,并且在最近的日期(3 月 15 日和 11 月 22 日)之间。但是,当我使用 Unix 时间戳并人为地向日期添加一年时,脚本认为 11 月 22 日尚未发生,因此它表明 2 月 1 日在 3 月 15 日和 11 月 22 日之前,而不是在它们之间。因此,我需要在不使用年份的情况下比较日期。

希望这是有道理的。我只想使用月份和日期来比较日期,但忽略年份,并使用像我在图片中显示的轮子这样的框架。

Determine if date falls between two dates

最佳答案

您示例中的问题是(在同一年)上限日期在下限之前。在这种情况下,任何小于上限(1 月 1 日 - 3 月 14 日)或大于下限(11 月 23 日 - 12 月 31 日)的日期都介于两者之间。

<?php
    $upperBound = new DateTime("Mar 15");
    $lowerBound = new DateTime("Nov 22");
    $checkDate = new DateTime("Feb 1");

    if ($lowerBound < $upperBound) {
        $between = $lowerBound < $checkDate && $checkDate < $upperBound;
    } else {
        $between = $checkDate < $upperBound || $checkDate > $lowerBound;
    }
    var_dump($between);
?>

显示: bool 值真

编辑

如果您要检查的日期是“2 月 29 日”并且当前年份不是闰年,则 DateTime 会将其解释为“3 月 1 日”。

要检查一个日期是否在两个日期之间,包含两个日期,使用:

if ($lowerBound < $upperBound) {
    $between = $lowerBound <= $checkDate && $checkDate <= $upperBound;
} else {
    $between = $checkDate <= $upperBound || $checkDate >= $lowerBound;
}

关于php - 找出日期是否在两个日期之间,忽略年份,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17540268/

相关文章:

php - 通过 ssl 连接到 google.com

php - 如何加快通过 Amazon SES 发送邮件的速度?

php - json_encode 创建格式错误的 JSON 数据?

javascript - 格式化javascript日期以匹配rails格式

sql - 如何仅根据 Oracle 中的日期部分比较两个 DATE 值?

java - 如何从从 Facebook 检索的日期字符串中解析时间

php - Laravel 5.2 无法将跨域 jQuery 方法识别为 AJAX

oracle - 在 Oracle 数据库中使用 JdbcTemplate 插入时间戳 (ORA-01858)

java - 计算Java中两个日期之间的天数

php - Laravel:违反完整性约束:1062 键 'jon@doe.com' 的重复条目 'users_email_unique'