【问题标题】:Winforms DateTimePicker - Wrong week numberWinforms DateTimePicker - 错误的周数
【发布时间】:2021-08-30 12:54:23
【问题描述】:

当我将 Windows 的区域格式设置为 英语(瑞典)(同样适用于例如 捷克语 格式)时,一年中的最后一周是 52 岁和新年从第 1 周开始。默认情况下,每周的开始时间是星期一。

当我将 Windows 的区域格式设置为 英语(欧洲)(同样适用于例如 罗马尼亚语 格式)时,一年中的最后一周是 53 岁和新年从第 2 周开始。默认情况下,星期的开始是星期日,但我已将其切换为星期一(尽管在这种情况下更改对周数的计算没有影响)。

我预计周数将取决于每个国家/地区使用什么作为一周的开始,但这似乎只是随机的?瑞典和捷克使用星期一作为一周的开始,它们的计算方法是一样的。但是罗马尼亚(以及欧洲大部分地区)也使用星期一作为一周的开始,那么为什么周数不同?

我了解公历和 ISO8601 的方式有所不同,但根据this 的问题,如果 Windows 仅使用公历,为什么计算会改变?

此外,除了更改整个区域之外,我还需要更改哪些设置来影响这一点?

【问题讨论】:

  • 我不知道你如何检查你是否得到了正确的周数。但有些日历使用不同的周编号方案。这意味着当一年有 53 周时,周数可以偏移一个,具体取决于他们如何定义。
  • Week number 不是唯一的。这个数字取决于第 1 周,以防一年从一周的中间开始(大多数情况下)。第一个部分周算作下一年的第 1 周还是前一年的第 53 周?在 ISO 8601 第 1 周中是 the week with the first Thursday of the Gregorian year。这意味着January 1 可以在上一年的第 53 周结束
  • 不同的国家可能使用不同的“官方”周编号方案,就像它们使用不同的格式一样。或者可能没有任何官方的周数方案,在这种情况下,Windows 使用默认方案。
  • @PanagiotisKanavos 我想你误解了我的第一条评论。当我写“我不知道你怎么样”时,我的意思是“你=问题的作者”。我不知道他如何得到他的“正确”周数。来自纸质日历?从windows配置了他自己的区域?管他呢。在我建议的答案中,我告诉他没有跨地区的正确周数这样的事情

标签: .net winforms


【解决方案1】:

以下来自What Are Week Numbers?

周一还是周日优先?

目前全球至少有六种不同的周编号系统在使用。

最常见的是国际标准 ISO 8601,其中星期一是一周的第一天,然后是星期二、星期三、星期四、星期五、星期六,星期日是第七天和最后一天。使用 ISO 8601 有助于减少国际交流时的不确定性和混乱。

在美国和加拿大不是 ISO 8601

但是,并非每个国家/地区都遵循此标准。包括美国、加拿大、澳大利亚和新西兰在内的几个国家/地区将星期日作为其日历上一周的开始。

哪一年有 53 周?

公历中的星期从第 1 周到第 52 周或第 53 周编号,具体取决于几个不同的因素。大多数年份有 52 周,但如果该年从星期四开始,或者是从星期三开始的闰年,则该特定年份将有 53 周编号。这些周数在一些欧洲和亚洲国家/地区普遍使用;但在美国没有那么多。

其他问题

有些日历只是弄错了,所以对照它检查你的计算,会引起混乱。

如果您想使用每个用户的区域窗口设置,那么您的周数将不匹配,如果您在不同区域的用户使用不同的周编号方案。

替代解决方案

解决方案是根本不使用周数,而是通过开始日期和结束日期来指定周数。

【讨论】:

  • 这不是一个好的解释。所有国家/地区都使用两个不同的周数,具体取决于 Week 1 一年应该从一周的中间开始。 Thursday, January 1 是新年的第 1 周还是旧年的第 53 周?星期三呢?
  • 但是 2022 年不是从星期四开始,也不是从星期三开始。虽然 Windows 可能出错,但我认为这不太可能。
  • @rancor1223 我和你一样陷入困境,解决方案是坚持使用特定的计算周数的方法,并清楚地与你的用户沟通,你使用哪种方法。如果您使用 Windows 的默认区域设置,请将其传达给您的客户,以避免混淆。
  • @rancor1223 如果您想使用用户的区域设置,那么您来自不同区域的用户之间的周数将不匹配,如果您在不同区域的用户使用不同的周编号方案。我会将其添加到我的答案中。
  • @PanagiotisKanavos 随时编辑我的答案或发布您自己的答案。我多次遇到这个问题,有多个客户。我对他们的建议是,如果他们想清楚地沟通,就不要使用周数。我什至看到在同一个国家使用不同的标准。
猜你喜欢
  • 1970-01-01
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多