[英]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.