如何检查年度日期条件

时间:2014-09-01 10:21:04

标签: php mysql arrays date

我在计算年度年度条件时遇到了麻烦。

在我的项目中,我们允许用户随时创建一个计划,但结束日期将是(3月31日)。 用户每年只能创建一个计划。在明年,他们可以创建一个新的计划,并在未来几年采用相同的方式。

现在我的问题是如何检查用户已经为今年创建计划的这种情况?

我在数组中获得计划创建日期(来自MySQL),如下所示:

 Array
 (
    [0] => 2010-04-19 08:20:45
    [1] => 2011-09-19 08:20:45
    [2] => 2012-05-19 08:20:45
    [3] => 2013-08-19 08:20:45
 )

我没有正确的方法来实现它。

2 个答案:

答案 0 :(得分:1)

尝试#1

第一种方式是最好的:你比较2个日期的年份(在你的情况下 - 日期时间)。当前年度必须大于上一个日期:2010年 - 2014年。然后您以相同的方式比较日期和月份,但更精确:

$current = time();
$last = strtotime("2010-04-19 08:20:45");
$years_diff = (int) date("Y", $current) - (int) date("Y", $last);
$months_diff = (int) date("n", $current) - (int) date("n", $last);
$days_diff = (int) date("j", $current) - (int) date("j", $last);

$condition = false;
if ($years_diff == 1) { // ABOUT one year ago when last plan was created
    if ($months_diff == 0) { // Current month is month when plan was created
        if ($days_diff >= 0) { // Larger than or equal to day when last plan was created
            $condition = true;
        }
    }
    else if ($months_diff > 0) { // Next months in new year
        $condition = true;
    }
}
else if ($years_diff > 1) { // ABOUT 2 or more years ago when last plan was created
    $condition = true;
}

条件的压缩版本:

$condition = (($years_diff == 1) ? (($months_diff == 0) ? ($days_diff >= 0) : ($months_diff > 0)) : ($years_diff > 1));



尝试#2

简单方法是计算上次和当前日期之间的差异(在您的情况下 - “日期时间”)。然后检查差异是否大于或等于365天。

$current = time();
$last = strtotime("2010-04-19 08:20:45");
$days_diff = ($current - $last) / (60 * 60 * 24);
$condition = ($days_diff >= 365);

答案 1 :(得分:1)

这个怎么样?

   $last = strtotime("2014-04-01");

   $years_diff = (int) date("Y") - (int) date("Y", $last);

   if($years_diff == 1){
      if(date('Y-m-d') > date('Y-m-d', strtotime((date('Y',$last)+1)."-03-31")))
      {
        echo 'Let them create new plan'; exit;
      }
   }
   else if($years_diff == 0){
     if(date('m',$last) > 03){
         echo 'Sorry ! you can not create'; exit;
     }
     if(date('Y-m-d') > date('Y-m-d', strtotime(date('Y',$last)."-03-31")))
     {
        echo 'Let them create new plan'; exit;
     }   
   }
   else
      echo 'Let them create new plan'; exit;

希望它可以帮助你:)