【问题标题】:How to check if a date is in a given range of day+month? [duplicate]如何检查日期是否在给定的日+月范围内? [复制]
【发布时间】:2012-06-23 17:14:50
【问题描述】:

可能重复:
How to check if a date is in a given range?

将每年划分为多个时期,例如

from 11-28 to 01-20
from 01-21 to 02-16
from 02-17 to 03-15
from 03-16 to 05-04
from 05-05 to 07-25
from 07-26 to 10-10
from 10-11 to 11-27

有些日子

$date1 = '06-09-1990';
$date2 = '05-03-1867';
$date3 = '02-29-1945';
$date4 = '06-24-2012';
$date5 = '12-25-2015';
$date6 = '07-15-2010';

如何检查一天是否在这些范围之一?

附:对不起我的英语

【问题讨论】:

标签: php


【解决方案1】:

你可以使用这个小功能:

<?php
    $s_date = strtotime("2009-03-01 12:00");
    $e_date = strtotime("2009-03-03 14:00");
    $date = strtotime("2009-03-02 13:00");
    if($date > $s_date && $date < $e_date)
        print "Date is between start and end";
    else
        print "Date is outside start and end";
?>

另一种方式


function isDateBetween($dt_start, $dt_check, $dt_end){
    if(strtotime($dt_check) > strtotime($dt_start) && strtotime($dt_check) < strtotime($dt_end))
        return true;
    return false;
}
isDateBetween("2004-01-01", "2004-01-02", "2004-01-03")

【讨论】:

  • 我需要一种适用于任何年份的方法,而不是特定年份
  • 这里具体是什么???
  • 算法必须在同一时期有效,但对任何年份都有效。使用您的方法,我必须每年插入一张支票(显然不可能)。
  • 我不明白你在说什么?它对所有年份都有效。您需要插入什么样的支票?
  • 我有某一天(例如 06/09/1990、05/03/1867 等...)。我想给这一天一个时期。每年的时间段都是相同的(例如,从 03-15 到 04-05,从 04-06 到 04-20 等......)。
【解决方案2】:

PHP 中的日期值表示为 UNIX 时间戳,它们表示自 1970 年 1 月 1 日以来经过的秒数。

您可以使用mktime 函数来创建日期(http://php.net/manual/en/function.mktime.php)。 将它们作为数字后,您可以轻松地比较它们。

$interval_start = mktime(0, 0, 0, 1, 0, 2000);
$interval_end = mktime(0, 0, 0, 1, 0, 2010);
$my_date = mktime(0, 0, 0, 1, 0, 2004);
if($my_date > $interval_start && $my_date < $interval_end) {
    // in the interval
} else {
    // not in the interval
}

【讨论】:

  • 我需要一种适用于任何年份的方法,而不是特定年份
猜你喜欢
  • 1970-01-01
  • 2010-11-01
  • 2018-05-12
  • 2021-05-23
  • 1970-01-01
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多