2011-07-22 98 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

相關問題