2013-04-16 77 views
1

我想獲得給定兩個日期的星期數,即從2012-01-01到2012-12-31。星期數應該完全落在上面指定的範圍內。可以ü請爲此提供建議。獲取PHP中兩個日期之間的星期數

+0

週數?你的意思是兩個日期之間的星期數?或者兩者之間發生的一週數字? – BenM

+0

2012-01-01和2012-12-31之間的週數爲52. – cwallenpoole

+0

週數之間發生陣列。 – user2286462

回答

2

像這樣的東西應該很好地工作:

<?php 
    $startDateUnix = strtotime('2012-01-01'); 
    $endDateUnix = strtotime('2013-01-01'); 

    $currentDateUnix = $startDateUnix; 

    $weekNumbers = array(); 
    while ($currentDateUnix < $endDateUnix) { 
     $weekNumbers[] = date('W', $currentDateUnix); 
     $currentDateUnix = strtotime('+1 week', $currentDateUnix); 
    } 

    print_r($weekNumbers); 
?> 

DEMO

輸出

Array 
(
    [0] => 52 
    [1] => 01 
    [2] => 02 
    ......... 
    [51] => 51 
    [52] => 52 
) 
+0

感謝您給予答覆...我想2012-12-01 -2013-06-30.But它給錯誤的結果。 – user2286462

+0

@ user2286462它給你什麼,你期望什麼? – h2ooooooo

+0

你可以試試2011-01-01 - 2011-12-31和檢查 – user2286462

0

做這樣的事情:

[REMOVED]

編輯

<?php 

for($w = strtotime($start_date); $w <= strtotime($end_date); $w += 7 * 24 * 3600) 
{ 
echo date("W", $w) . '<br />'; 
} 

?> 
+0

如果$ start_date是'2012-12-20'而$ end_date是'2013-03-04'會怎麼樣?那將是一個無限循環。 – h2ooooooo

1

像這樣的東西應該做的工作:

$start = '2012-01-01'; 
$end = '2012-12-31'; 

$dates = range(strtotime($start), strtotime($end),604800); 
$weeks = array_map(function($v){return date('W', $v);}, $dates); // Requires PHP 5.3+ 

print_r($weeks); 
+1

'$ start ='2012-12-15'; $ end ='2013-03-21';'會輸出一個介於'50'和'12'之間的錯誤。 – h2ooooooo

+0

@ h2ooooooo謝謝,修正了代碼:) – HamZa

2

我想你想是這樣的使用日期時間:

$first_date = new DateTime(); 
$last_date = new DateTime('-50 weeks'); 
$days_array = array(); 
foreach(new DatePeriod($first_date, new DateInterval('P1D'), $last_date) as $date) { 
    $days_array[] = $date->format('W'); 
} 
+0

日期管理是完全陷阱。我也強烈建議使用日期時間女巫允許你定義時區。 – Gabriel

0

你可以使用weeks_beween_dates()函數以下兩個日期之間的週數。

function weeks_beween_dates($d1,$d2) 
{ 
    $t1 = strtotime($d1); 
    $t2 = strtotime($d2); 
    $now = $t1; 
    $out = array(); 
    while ($now <= $t2) { 
     $out[] = date('W', $now); 
     $now = strtotime('+1 week', $now); 
    } 
    return $out; 
} 

print_r(weeks_beween_dates('2015-01-01','2015-12-31')); // 01..53 
print_r(weeks_beween_dates('2016-01-01','2016-12-31')); // 01..52 
相關問題