首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET Calendar.GetWeekOfYear返回en-US的不正确结果

.NET Calendar.GetWeekOfYear返回en-US的不正确结果
EN

Stack Overflow用户
提问于 2013-01-09 17:26:52
回答 1查看 2.8K关注 0票数 0

我找了一个类似的帖子,但似乎没有人回答这个问题。

根据timeanddate.com网站的说法,对于01/01/2005和12/28/2008号,周数应该是1,前提是它是正确的:

01/01/20052008年2月12日

问题是,我拥有的C#代码为01/01/2005生成了正确的周数结果,但在12/28/2008中产生了一个错误的结果,返回53,而不是1:

代码语言:javascript
复制
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

对于CalendarWeekRuleFirstDayOfWeek,我使用了en-US文化的默认选项。

EN

回答 1

Stack Overflow用户

发布于 2013-01-21 10:16:38

有关此问题的说明可从这里获得。

我在CalendarWeekRule.FirstFourDayWeek规则中使用了下面的方法-它检查周四的周号是什么(使用相同的.NET方法),因为星期四是使用该规则时真正重要的一天,而微软的代码一直都是正确的:)

代码语言:javascript
复制
    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);
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14242940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档