2010-04-30 47 views
2

我需要幫助創建一個函數來確定基於這兩個參數的週數週數:確定以起始日期

  1. 開始日期
  2. 指定日期

例如,如果我將2010年4月7日指定爲開始日期&作爲查找日期的2010年4月20日,我希望函數返回WEEK 2.另一個示例,如果我將2010年3月6日設置爲開始日期並查找4月5,2010那麼它應該返回WEEK 6.

我感謝您的時間和幫助。

=================

UPDATE

例如:

開始日期:3/6 - week1 查詢日期:4/5

第2周從3月7日至13日開始。 第3周(3/14-3/20)。 第4周(3/21-3/27)。第5周(3/28-4/3)。 因此4/5屬於第6周。

一個想法是使用開始日期的星期日作爲NEW *開始日期。因此,而不是查看3/6,函數將使用2/28作爲開始日期。

+2

怎麼就你長了3月6日和4月5日 – nik 2010-04-30 06:19:52

+0

6之間每週有3月6日和4月5日之間的30天,這將導致在第5周,你能解釋一下如何優6周? – codaddict 2010-04-30 06:27:30

+0

我很抱歉不清楚。是的,函數需要返回第6周,因爲我沒有試圖查找基於2日期的天/週數。 3月6日(星期六,根據太陽 - 星期六日曆)是第1周的開始日期。第2周從3月7日至13日開始。第3周(3/14-3/20)。第4周(3/21-3/27)。第5周(3/28-4/3)。所以4/5在第六週下降。 – user329497 2010-04-30 13:07:23

回答

1

你可以找到兩個日期之間的天數,由7除以數量和拍攝效果的ceil

$start_date = strtotime("2010-04-07"); 
$specified_date = strtotime("2010-04-20"); 
$num_of_days = ($specified_date - $start_date)/(60*60*24); 
$week_num = ceil($num_of_days/7); 
echo $week_num; // prints 2. 
+0

爲什麼不用(60 * 60 * 24 * 7)'在一步中劃分? – 2010-04-30 07:54:23

1

怎麼樣?

  1. 確定的天數,因爲開始日期
  2. 同上,在指定日期的
  3. 除以7
0

時代由於我不知道你怎麼樣我會做類似的事情:

$starting = mktime(parsedStartingDate); 
$lookup = mktime(parsedLookupDate); 

$result = $lookup - $starting; 
$result = (((($result/60)/60)/24)/7); 

return $result; 
0

既然你不是很清楚,這可能會或可能不是你要找的東西:

// Example 1 (returns 2) 
date('W', strtotime('April 20, 2010')) - date('W', strtotime('April 7, 2010')); 

// Example 2 (returns 5) 
date('W', strtotime('April 5, 2010')) - date('W', strtotime('March 6, 2010')); 
0

想通了。

$start_date = strtotime("2010-03-06"); // returns 1267862400 

$start_date_week = strtotime("last sunday",$start_date); // 02-28 

$specified_date = strtotime("2010-04-10"); // returns 1270882800 

$specified_date_week = strtotime("next sunday",$specified_date); // 4-11 looking up the Next Sunday was also the key! 

$num_of_days = ($specified_date_week - $start_date_week)/(60*60*24); // 41.958 
$week_num = ceil($num_of_days/7); //6 

echo $week_num; 
相關問題