close

公司一定都會用到大大小小的報表,
而通常都有日報,週報,月報季報等

對於時間範圍的訂定在處理上一直覺得很麻煩

最近使用了這個解決辦法感覺還不錯

當知道了日期,要找出此日期為一年中的第幾週,

VS已經有很方便的解決方案:

使用System.Globalization.Calendar
System.Globalization.Calendar cal = new System.Globalization.CultureInfo("zh-CN").Calendar;

抓取目標
int_WeekNo = cal.GetWeekOfYear(DateTime, System.Globalization.CalendarWeekRule.FirstFullWeek, DayOfWeek.Friday);

其中三參數分別為

1.目標日期(DateTime)

2.一年的第一天以什麼方式判定(三種 以一年的第一天為起始or以一年第一個禮拜(使用者設定)為起始 or 一年的第一個禮拜有四天在一年的第一天之前)

3.一周的起始為星期幾

如此即可得知該日期為一年的第幾週

而若知道年份與週數,如何得到日期區間

這邊我自己寫了個function:

private DateTime[] get_WeekRange(int Year, int Week)
    {
        //此例子為一個星期從週五開始
        DateTime YearStart = new DateTime(Year,1,1);
        //一年的第一天為星期幾
        int a = (int)YearStart.Date.DayOfWeek;
        //星期起始減第一天的星期加上第一天即得一年第一個星期的第一天
        YearStart = YearStart.AddDays(5 - a);
        //加上(星期數-1)*7
        DateTime dStart = YearStart.AddDays(Convert.ToDouble(Week*7-7));
        //當週結尾
        DateTime dEnd =dStart.AddDays(6);
        return new DateTime[] { dStart, dEnd };
    }

醬就得到日期區間了

寫的很爛請大家多指教~

arrow
arrow
    全站熱搜

    pikachumk2 發表在 痞客邦 留言(0) 人氣()