[英]Get Week number from a given date when week start on Sunday
當我一周的第一天是星期日時,如何從給定的日期獲取一年中的正確星期數。
例如:
6 May 2018 - 12 May 2018
是第18周
13 May 2018 - 19 May 2018
是第19周
我正在嘗試以下擴展方法,但無法達到所需的結果。 這是第19周和第20周,我預計第18周和第19周。
public static int GetWeekOfYear(this DateTime date)
{
return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(
date,
CalendarWeekRule.FirstFourDayWeek,
DayOfWeek.Sunday);
}
您需要更改方法的參數
CultureInfo.InvariantCulture.Calendar.GetWeekOfYear()
CalendarWeekRule.FirstFourDayWeek -> CalendarWeekRule.FirstFullWeek
根據
FirstFullWeek
文檔-表示該年的第一周在該年的第一天或之后的指定的第一天的第一次出現開始。
像這樣
public static int GetWeekOfYear(DateTime date)
{
return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday);
}
CalendarWeekRule Enumeration
:定義用於確定一年中第一周的不同規則。
以前使用的是:
CalendarWeekRule.FirstFourDayWeek
需要替換為:
CalendarWeekRule.FirstFullWeek
因為:
代碼段:
public static void Main()
{
var week_test = Convert.ToDateTime("05/06/2018");
var week_test2 = Convert.ToDateTime("05/13/2018");
List<DateTime> weekList = new List<DateTime>();
weekList.Add(week_test);
weekList.Add(week_test2);
CultureInfo ciCurr = CultureInfo.CurrentCulture;
foreach(var week in weekList)
{
int weekNum = ciCurr.Calendar.GetWeekOfYear(week, CalendarWeekRule.FirstFullWeek, DayOfWeek.Sunday);
Console.WriteLine(weekNum);
}
}
輸出:
演示:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.