2014-03-03 122 views
0

我正在使用php函數來計算基於一些變量的一年中的數字。計算一個月份的日期和日期之間的PHP差異

事實上,我有2個變量:

  1. 第一是日期變量(在YYYY-MM-DD格式);
  2. 第二個是「日標」變量(我有9個特定日期的列表 - > 2,6,8,10,14,17,21,23,27);

這是我已經成功地放在一起,所以我可以得到一年的一週功能:

$duedt = explode("-", "YYYY-MM-DD"); 
$date = mktime(0, 0, 0, $duedt[1], $duedt[2], $duedt[0]); 
$week = (int)date('W', $date); 

至於上面的代碼的例子,如果我們將「YYYY-MM -DD「與」2014-02-09「,它將確定週數是6(女巫是正確的)

現在,我的問題是:我該如何修改它,所以它會跟蹤第二個變量(「日期標記」)

對於「2014年2月9日」天例如我想有如下:

  • 如果「天痕」是10(意味着本月10日)=>此周 數量將是7
  • 如果「天痕」是8(指 月8日)=>週數將是6

我如何能修改函數的任何想法?

預先感謝您!

我最誠摯的問候, 邁克爾

回答

0
function week_day_of_month($day,$month_num, $year) { 
    $days_in_month = array(1=>31, 2 => 28,...);//doesn't account for leap, you need to 
    $ts = strtotime(format_date($day,$month_num,$year)); 
    $week_num = date('W', $ts); 
    $month_days = $days_in_month[$month_num]; 
    for ($i = 1;$i<=$month_days;$i++) { 
    $ats = strtotime(format_date($i,$month_num, $year)); 
    if ($ats == $ts) 
    break; 
    } 
$day = $i; 
return array($day,intval($week_num)); 
} 

format_date剛剛轉男,d,Y弄成的strtotime可以解析。 你可以通過在兩個數組中有兩個數組來處理跳躍0 =>非跳躍,1 =>跳躍。計算飛躍很容易。並選擇正確的陣列

2

我不知道,如果你過於複雜這與否。難道你不能只提供日期,並使用相同的方法獲取任何日期的星期編號?甚至低於簡單:

$date = new DateTime('2014-02-08'); 
echo (int) $date->format('W'); // 6 

$date = new DateTime('2014-02-09'); 
echo (int) $date->format('W'); // 6 

$date = new DateTime('2014-02-10'); 
echo (int) $date->format('W'); // 7 
+0

Hello John,並感謝您的代碼。 事實上,這個想法有點「看起來過於複雜」,但實質上它很簡單:) 實際上,找出這段代碼中的星期數字,將有助於打開特定的Excel電子表格與數據:) 這就是爲什麼我需要這些2個變量! 再一次感謝你的代碼,但這不是我想要實現的... – Riddler

相關問題