2017-04-13 185 views
-2

星期六星期六(星期六 - >星期五)以星期六爲基準的星期數?我一直在解決這個問題時遇到了很多麻煩。 PHP解決方案將不勝感激,但任何語言的任何示例都可以。星期六開始星期的星期數

我的公司工作周從星期六(第1天)到星期五(第7天),我需要能夠顯示週數(如52/53周第23周)。我可能會感到困惑,並且正常的Date('W', $time)函數給出的週數是足夠的,但我對此表示懷疑。

我在Excel中找到了可能的解決方案,但是我很長一段時間沒有做過VBA,也無法制作正面和反面的this implementation

+0

周依據是什麼號碼?自今年年初以來? http://stackoverflow.com/q/4896452/56778對你有什麼用處?本頁面顯示的其他相關問題如何(下方和右方)?或者,也許http://stackoverflow.com/q/30056515/56778將是有用的。你需要做一點研究。 –

+0

你如何定義「周編號」?是從某個日期開始還是你是指一週內的數字(星期六= 1,星期日= 2等)? – toonice

+0

請正確地擴展您的需求。即具有樣本投入和預期產出,特別是在一年左右的日期。如果你有一個基於本週不同開始日期的工作實施,我認爲應該可以通過抵消這一天來僞造它。 –

回答

0

這些功能似乎解決我的問題,但更遙遠的多年試驗可能是必要的:

// The N option gives the normal week day, arithmetic makes it return my custom week days 
function getDayOfWeek(\DateTimeImmutable $date) 
{ 
    return ($date->format('N') + 2) % 7; 
} 

function getWeekNumber(\DatetimeImmutable $date) 
{ 
    // Recursive function that loops through every day until it gets the start of a week 
    $startOfWeek = function (\DateTimeImmutable $date) use (&$startOfWeek) { 
     return (getDaysOfWeek($date) === 1) 
      ? $date : $startOfWeek($date->modify('+1 day')); 
    }; 

    // The z option tells us what day of the year this is, 
    // not a 100% sure this step is necessary 
    if (getDayOfWeek($date === 1) { 
     $nbDays = $date->format('z'); 
    else { 
     $nbDays = $startOfWeek($date->modify('-7 days'))->format('z'); 
    } 

    // Divides by the number of days in a week to get the number of weeks 
    return ceil($nbDays/7); 
} 
相關問題