2013-03-11 93 views
1

我正在嘗試計算期間的數量(每個期間爲1周,在某個日期或某天之後)。可以說,第一階段開始於2013年1月1日(星期二)至2013年1月29日(星期二)(共4個階段)。計算特定日期後的星期數量

我有一個表,看起來像:

id | startDate (datetime) | endDate (datetime) 

我有兩個輸入框,用戶可以在一個start dateend date填寫。我想填寫01-01-201329-01-2013之間的任何日期,並決定它再次通過星期二(該期間開始的日期)的次數。

所以,如果我會選擇01-01-2013 until 07-01-2013會導致:1,但如果我會選擇06-01-2013 till 09-01-2013這將導致206-01-2013 till 16-01-2013會導致3

要清楚,我不想知道的金額這兩個日期之間的星期數,只有它在數據庫中給出的同一天(星期二)「交叉」的次數。每期爲1周。有沒有人可以幫助我?

+0

澄清,你想知道X日(星期二)在日期Y和Z之間有多少次? – mkaatman 2013-03-11 16:07:05

+0

是的!多數民衆贊成什麼即時通訊尋找,我不能讓我的頭靠近它 – Geo 2013-03-11 16:08:45

+0

搜索! http://stackoverflow.com/questions/1653891/how-to-find-number-of-mondays-or-tuesdays-between-two-dates – mkaatman 2013-03-11 16:11:04

回答

2

使用PHP的date()函數。

$startday = strtotime($start_date_from_db);//date from db; 
$endday = strtotime($end_date_from_db);//date from db; 
$counter = 0; 
for($i=$startday; $i<=$endday; $i+=86400) { 
    $current_day = date('w', $i); 
    if($current_day == 2) { //0 for sunday, 1 for monday, 2 for tuesday 
     $counter++; 
    } 
} 
+0

相當浪費,特別是如果它是一個「大」日期範圍。有更簡單的方法來獲取日期範圍長度。 – 2013-03-11 16:13:36

+0

@MarcB在OP的例子中,開始日期和結束日期之間的差異只有兩個月。所以這不會是一個問題。 – ShuklaSannidhya 2013-03-11 16:20:00

1

當比較日期的好方法是:

1-變換日期時間戳:

$timestamp1 = strtotime($date1); 
$timestamp2 = strtotime($date2); 

2-做所需的操作,在這種情況下:

$timebetween = $timestamp2 - $timestamp1; 

3-在這種情況下將結果(秒數)轉換爲期望值:

$weeks= $timebetween/604800; 
相關問題