我搜索了一个类似的帖子,但似乎没有人回答这个问题。
对于 01/01/2005 和 12/28/2008 的日期,根据 timeanddate.com ,周数应为1 em>网站,假设它是正确的:
问题是,我生成的C#代码为 01/01/2005 生成了正确的周数结果,但 12/28/2008 的结果不正确,返回53,而不是1:
CultureInfo clUS = new CultureInfo( "en-US", false );
int wkNm = clUS.Calendar.GetWeekOfYear(
new DateTime( 2005, 1, 1, clUS.Calendar ),
clUS.DateTimeFormat.CalendarWeekRule,
clUS.DateTimeFormat.FirstDayOfWeek
); // returns 1
wkNm = clUS.Calendar.GetWeekOfYear(
new DateTime( 2008, 12, 28, clUS.Calendar ),
clUS.DateTimeFormat.CalendarWeekRule,
clUS.DateTimeFormat.FirstDayOfWeek
); // returns 53
对于CalendarWeekRule
和FirstDayOfWeek
,我使用的是美国文化的默认选项。
答案 0 :(得分:0)
可从here
获取有关该问题的说明我对CalendarWeekRule.FirstFourDayWeek
规则使用以下方法 - 它会检查星期四周数是多少(使用相同的.NET方法),因为星期四是使用它时真正重要的一天规则和微软的代码一直都是正确的:)
private static int WeekNumber(DateTime date)
{
var dayOffset = DayOfWeek.Thursday - date.DayOfWeek;
if (dayOffset > 0)
date = date.AddDays(dayOffset);
return CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(date, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
}