【问题标题】:GetWeekOfYear returns 2 while it should return 1 for date 02.01.2012GetWeekOfYear 返回 2 而它应该为日期 02.01.2012 返回 1
【发布时间】:2012-09-24 07:58:06
【问题描述】:

为什么下面的伪代码返回 2 作为周数?不应该是1吗?

string x = cal.GetWeekOfYear(02.01.2012 as datetime, cultureInfo.currentculture.DateTimeFormat.CalendarWeekRule, CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek).toString();

【问题讨论】:

  • 视情况而定。在您的计算机上,您的用户帐户下,CultureInfo.CurrentCulture 是什么?
  • 对,根据日历设置,1 月 1 日(星期日)可能是第 1 周的结束(和开始!)。
  • 您可以通过检查CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek的值来检查这一点
  • 如果 FirstDayOfWeek = Monday 并且 CalendarWeekRule = FirstFourDayWeek 返回 1。
  • @all,一周的第一天是“星期一”,当前文化是 TR-tr,CalendarWeekRule 是 FirstDay,但我无法通过查看这些值来弄清楚。

标签: c# datetime week-number


【解决方案1】:

您说您当前文化的CalendarWeekRuleFirstDay,其定义为(强调我的):

表示一年中的第一周从一年的第一天开始 年和在以下指定的第一天之前结束 一周

你还说你一周的第一天是星期一。

2012 年 1 月 1 日是星期日,第一周从那天开始。由于您一周的第一天是星期一,因此第一周在下一个星期一之前结束,即星期日本身。

因此,根据您的文化设置,2012 年 1 月 2 日确实是第 2 周的第一天。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 2019-01-09
    • 2021-07-12
    • 2015-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-16
    相关资源
    最近更新 更多