2

我想检查给定日期(如 2012-12 年)是否比当前日期旧或新。

我知道如何检查大月份

if(strtotime('2012-12')<strtotime('-1 Months')){
   echo "true"; // got TRUE ... correct!
} else {
    echo "false";
}

但是较新的呢?

if(strtotime('2013-02')>strtotime('1 Months')){
   echo "true";
} else {
    echo "false"; // got FALSE ... incorrect !
}

检查较新日期时,我得到了不正确的结果。

4

3 回答 3

7

您忘记将 + 添加到您的 strtotime 函数。

if(strtotime('2013-02')>strtotime('+1 Months')){
   echo "true";
} else {
    echo "false";
}

更新: 你的问题有些奇怪。例如,2013-02 不是日期,而是对月份的引用。如果您想检查这是否是该月的第一天,请使用完整的日期表示法:2012-02-01。如果要检查当前日期是否为月份,请检查当前月份date("n")(返回 1-12);并将其与给定的月份进行比较,例如:

$date = "2012/02/01";

if(date("n", strtotime($date)) != date("n")) {
 echo 'not current month';
}

如果您想检查这是否不是当前日期,请执行以下操作:

$date = "2012/02/01";

if(date('d-m-Y', strtotime($date)) != date('d-m-Y')) {
 echo 'not current day';
}
于 2013-01-09T11:10:30.223 回答
2

如果您想将日期与当前时间进行比较,以查看它是过去还是将来,您可以使用

$date = '2013-02';
$now = time();

if ( strtotime($date) > $now ) {
    echo 'Date is in the future';
} else {
    echo 'Date is in the past';
}

但是请注意,如果您提供像$date = '2013-01'ie 这样没有一天的日期,它将像过去一样返回,即使我们仍在 1 月。如果这是您想要的行为,请务必查看

于 2013-01-09T11:16:53.580 回答
1

比较字符串呢?如果您可以直接比较字符串,使用 ISO 8601 格式 yyyy-mm-dd 它们总是按字典顺序排列。

2012-01 < 2012-12 < 2013-01 < 2013-02 < 2014-01 (粗体为当前)

于 2013-01-09T11:18:29.140 回答