Php 如何检查年度日期条件
我很难计算每年的情况 在我的项目中,我们允许用户在任何时候创建一个计划,但他们的结束日期将是固定的(3月31日)。 用户每年只能创建一个计划。明年,他们又可以制定一个新的计划,接下来的几年也是如此 现在我的问题是如何检查用户已经为今年创建了计划的条件 我在数组中获得创建计划的日期(从MySQL),如下所示:Php 如何检查年度日期条件,php,mysql,arrays,date,Php,Mysql,Arrays,Date,我很难计算每年的情况 在我的项目中,我们允许用户在任何时候创建一个计划,但他们的结束日期将是固定的(3月31日)。 用户每年只能创建一个计划。明年,他们又可以制定一个新的计划,接下来的几年也是如此 现在我的问题是如何检查用户已经为今年创建了计划的条件 我在数组中获得创建计划的日期(从MySQL),如下所示: Array ( [0] => 2010-04-19 08:20:45 [1] => 2011-09-19 08:20:45 [2] => 201
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
)
我没有找到正确的方法来实现这一点。尝试#1
第一种方法是最好的:你比较两个日期的年份(在你的例子中是datetimes)。当前年份必须大于最后日期的年份: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 简单的方法是计算上一个日期和当前日期之间的差值(在您的例子中是“datetime”)。然后检查差值是否大于或等于365天
$current = time();
$last = strtotime("2010-04-19 08:20:45");
$days_diff = ($current - $last) / (60 * 60 * 24);
$condition = ($days_diff >= 365);
这个怎么样
$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;
希望它可以帮助您:)$prevYear=substr($array[3],4);如果($prevYear==date('Y'){是否要检查数组中是否已经存在该值?@punithasubramanivyeah@Daan明白了,只要查看上面的评论,这可能是最快的方法;)你不能测试一下结束日期是否在当前日期之后吗?棒极了,伙计。工作得很有魅力:)谢谢你的解决方案兄弟:)