【问题标题】:C#: Set initial DayOfWeek as Monday not SundayC#:将初始 DayOfWeek 设置为星期一而不是星期日
【发布时间】:2011-03-09 07:31:42
【问题描述】:

有没有办法将第一个 DayOfWeek 设置为 Monday = 0 而不是 Sunday?

(int)dateList[0].DayOfWeek == 0) // 0 = Sunday

【问题讨论】:

  • -1 用于发布不完整的代码行 - jk
  • 视情况而定。你对这些价值观做了什么?

标签: c# dayofweek


【解决方案1】:

您需要创建自定义文化,并将初始 DayOfWeek 指定为星期一。您的自定义文化的实例需要设置为通常用于访问文化信息的任何上下文(即Thread.CurrentCulture)。以下文章应该可以帮助您开始创建自定义文化:

How to: Create Custom Cultures

编辑:

我刚刚重读了你的问题,我注意到了一些事情。您不能更改 DayOfWeek 属性...这只是一个枚举值。您需要将 DayOfWeek 与 CultureInfo.DateTimeFormat 属性的 FirstDayOfWeek 属性进行比较:

dateList[0].DayOfWeek == Thread.CurrentCulture.DateTimeFormat.FirstDayOfWeek

默认情况下,FirstDayOfWeekSunday。如果您创建了自定义文化,则可以是您选择的一周中的任何一天(即Monday)。

【讨论】:

  • +1:这是正确的方法。 DayOfWeek 不是数字,将其视为整数充其量是有问题的。
  • @Reed:同意。起初我对 OP 感到很困惑……阅读了几篇文章来弄清楚意图是什么。
  • 一周的第一天是否取决于文化?实际上“A”的第一天是非常主观的。第一天可能取决于你的工作......在医院工作可能是星期天。如果你在办公室工作或当老师,那就是星期一;-)
  • 我会在我的代码中注释掉你的代码,也许我以后需要它,当我的用户需要一个不同于星期一的 firstdayOfWeek 时 :)
  • @msfanboy:有文化上常见的“一周的第一天”天。在美国,从共同文化的角度来看,一周的第一天是星期日,一周的结束是星期六。从工作周的角度来看,在大多数情况下,一周的第一天是星期一。为 .NET 定义了许多现有的文化,但是如果您需要自定义文化的细节......例如提供第一个 DOW 是星期一的工作周文化,您就有这种能力。从技术上讲,您可以创建一种专门定义您个人生活方式的文化。 ;)
【解决方案2】:

DayOfWeekenum,因此您无法更改它。过去,我只是简单地调整了我存储的值来补偿,你可能需要做类似的事情。我需要 0 = 未设置。

【讨论】:

    【解决方案3】:

    只是为了让搜索此问题的人完成此操作,这是我的简单解决方法 (VB.NET):

    Private Function GetTrueDayOfWeek(DayOfWeekUS As Int16)
        Dim RetVal As Int16 = 0
        If DayOfWeekUS = 0 Then
            RetVal = 7
        Else
            RetVal = DayOfWeekUS
        End If
        Return RetVal
    End Function
    

    用法:

    Dim TrueDayInWeek as int16
    TrueDayInWeek = GetTrueDayOfWeek(dateList(0).DayOfWeek)
    

    【讨论】:

      猜你喜欢
      • 2019-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多