更清洁的方式来检查今天是否介于两个日期之间

时间:2012-12-12 18:59:29

标签: php

  

可能重复:
  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
}

什么是更干净的方式?

2 个答案:

答案 0 :(得分:7)

查看mktime()函数

$dateStart = mktime(0, 0, 0, 12, 28, 2012);
$dateEnd = mktime(0, 0, 0, 1, 1, 2013);

if (time() < $dateEnd && time() > $dateStart)
    // show stuff
}

答案 1 :(得分:1)

我很确定你可以创建日期对象并只是比较它们。

这样的事情:

$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代码的一部分。但是如果你需要对日期做更多的事情,比如找出日期的话。一周或添加时间间隔和重新显示,你会很高兴有周围的对象。)