2011-07-22 96 views
0

我想验证当前日期与问题发布日期如果日期差异大于1天那么它需要显示超过到期问题也不会考虑已经在我的日期数组阵列。结束日期验证

喜欢如果一个问题张贴在20日7月11日。

豁免日期数组{'21 - 7月-11' ,...等} 当前日期是22月,11

则输出需要显示等问题正在等待1天,而不是2天。

任何人都可以帮忙。

+0

您可以发布更详细的信息?喜欢:你在哪里存储日期?如果您将问题存储在数据库中,那么当您从数据库中提取数据时,比较sql级别的日期会更容易些吗? –

+0

将问题详细信息存储到我的数据库中。并添加日期时间格式的日期。我也在表格中保留一系列豁免日期。两者都是日期时间格式。 – seravee

+0

在这种情况下,创建一个SQL查询将更容易,该查询将只吸引您感兴趣的记录,然后将所有结果添加到php中的数组中... –

回答

0

这是我创建的一些示例代码,用于计算截止日期。当您提交的问题,计算到期日或之前的方式,并将其存储在条目这一问题的数据库...

<?php 

$daysDue = 2; 
$exDatesArray = array("2011-07-21", "2011-07-23"); //array with all your holiday dates. 
$question_1_Date = "2011-07-21"; 
$question_2_Date = "2011-07-18"; 
$question_3_Date = "2011-07-20"; 

echo "Holidays on: "; 
foreach($exDatesArray AS $exdate) 
{ 
    echo $exdate . ", "; 
} 
echo "<br/><br/>"; 
echo "submit date -> due date<br/>"; 
echo $question_1_Date . " -> " . calculateDueDate($question_1_Date, $exDatesArray, $daysDue) . "<br/>"; 
echo $question_2_Date . " -> " . calculateDueDate($question_2_Date, $exDatesArray, $daysDue) . "<br/>"; 
echo $question_3_Date . " -> " . calculateDueDate($question_3_Date, $exDatesArray, $daysDue); 

function calculateDueDate($date, $exDates, $daysDue) 
{ 
    //start with day 1 
    $count = 1; 

    //now we loop from day one to due days 
    while($count <= $daysDue) 
    { 
     //add one day to start date 
     $date = add_date($date, 1); 
     //check if that new date is a holiday 
     if(!in_array($date , $exDates)) 
     { 
      //only if it is not a holiday we increase counter, otherwise we dont count that day towards due period 
      $count++; 
     } 
    } 

    //return calculated due date 
    return $date; 
} 

function add_date($date,$days) 
{ 
    $cd = strtotime($date); 
    return date('Y-m-d', mktime(0,0,0,date('m',$cd),date('d',$cd) + $days, date('Y',$cd))); 
} 
?> 

输出:

Holidays on: 2011-07-21, 2011-07-23, 

submit date -> due date 
2011-07-21 -> 2011-07-24 
2011-07-18 -> 2011-07-20 
2011-07-20 -> 2011-07-24 
+0

考虑我的情况,管理员需要回复客户发布的所有问题。如果管理员在2天内未回答问题,则需要显示为超过期限问题。考虑一位客户是否在7月20日发布了问题。管理员需要在7月22日回应,假设21日是假期。我已将此日期存储在exemption_dates表格中。因此,在7月23日至23日期间,这种情况需要表明这个问题已逾期,而不是在7月22日11月过期。什么是我需要在这里使用的SQL。你可以帮我吗。 – seravee

+0

啊我看到你现在需要什么。下次尝试在开始时更好地解释这个问题。给我几分钟我会试图找出最好的解决方案... –

+0

当然我会清楚解释我即将到来的日子的问题。感谢您的建议。 – seravee

0
//convert date to unixtime (seconds) 
$question_sec = strtotime($question); 

//subtract 
$diff = time() - $question_sec; 
$days = $diff/60*60*24; 
echo "$days old"; 
+0

不完整,你没有考虑日期数组忽略 – rabudde

+0

@rabudde那是因为我几乎不能理解这个问题。 – Ariel

相关问题