簡體   English   中英

從星期幾開始的指定日期獲取星期數

[英]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);
  }
}

輸出:

在此處輸入圖片說明

演示:

dotNetFiddle

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM