2014年11月13日 星期四

【C#】某日期為該年的第幾週

發現了好玩的玩具,一開始只是因為需計算週數而搜尋,真的是有百百種做法,不過,最簡潔快速不囉唆的,是用GregorianCalendar.GetDayOfWeek方法,既然類別本來就有提供了,就不必特地去加工啦~




using System.Globalization;
/// 
/// 取得某一日期在當年的第幾週/// 

/// 日期
/// 該日期在當年中的週數
private int GetWeekOfYear(DateTime dt)
{
        GregorianCalendar gc 
= new GregorianCalendar();
        
return gc.GetWeekOfYear(dt, CalendarWeekRule.FirstDay, DayOfWeek.Monday);
}

GregorianCalendar.GetDayOfWeek方法
第一個參數:指定日期
第二個參數:定義日曆週的列舉值

FirstDay指示一年的第一週開始於該年的第一天,並結束於被指定為該週第一天的前一天。 該值為 0。
FirstFourDayWeek指示一年的第一週有四天以上在被指定為該週的第一天之前。 該值為 2。
FirstFullWeek指示一年的第一週開始於,一年的第一天當天或之後被指定為一週第一天的那天。 該值為 1。

第三個參數:一週第一天的列舉值,通常不是設成Monday就是Sunday



很討厭的是,這個類別只提供方法去取得日期為當年度第幾週,如果需要取得日期為當月份的第幾週,還是得自行加工,不過,倒還好啦,以當月第一天去取得週數,還是可以換算出當月週數或是當月總週數啦~


資料參考:

  1. Calendar.GetWeekOfYear 方法 (System.Globalization)
  2. 末末之家: [C#] 某日期為該年的第幾週 -- 使用GregorianCalendar

沒有留言:

張貼留言