公司一定都會用到大大小小的報表,
而通常都有日報,週報,月報季報等
對於時間範圍的訂定在處理上一直覺得很麻煩
最近使用了這個解決辦法感覺還不錯
當知道了日期,要找出此日期為一年中的第幾週,
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 };
}
醬就得到日期區間了
寫的很爛請大家多指教~
留言列表