【问题标题】:Cleaner way to check if today falls in between 2 dates [duplicate]检查今天是否在两个日期之间的更干净的方法[重复]
【发布时间】:2012-12-12 18:59:29
【问题描述】:

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

我需要在接下来的几天之间在我的网站上显示一些信息:

12/28 至 1/1

这是我目前的做法,但看起来很丑:

$today = date('m/d');
$days = array('12/28', '12/29', '12/30', '12/31', '1/1');

if(in_array($today, $days)) {
    // show stuff
}

什么是更清洁的方法?

【问题讨论】:

    标签: php


    【解决方案1】:

    mktime()函数

    $dateStart = mktime(0, 0, 0, 12, 28, 2012);
    $dateEnd = mktime(0, 0, 0, 1, 1, 2013);
    
    if (time() < $dateEnd && time() > $dateStart)
        // show stuff
    }
    

    【讨论】:

    • 你的意思是 mktime mkdate 在我的 php 版本中无法识别 (5)
    • 是的,对不起。更新了帖子。
    【解决方案2】:

    我很确定您可以创建日期对象并进行比较。

    类似这样的:

    $today = new DateTime();
    $start = new DateTime("2012-12-28");
    $end = new DateTime("2012-01-01");
    
    if($start <= $today && $today <= $end) {
        // show stuff
    }
    

    详情请参阅datetime constructor

    (我个人喜欢面向对象的方法,但 Hast 的答案在技术上更快,内存占用更少,并且是 PHP 代码的完全旧部分。但是如果您需要对日期做进一步的处理,比如找出日期周或添加时间间隔并重新显示,您会很高兴有这些对象。)

    【讨论】:

      猜你喜欢
      • 2017-05-11
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      相关资源
      最近更新 更多