【问题标题】:Converting DayOfWeek enum to a string repesenting the day将 DayOfWeek 枚举转换为代表当天的字符串
【发布时间】:2011-01-11 06:22:51
【问题描述】:

我想知道是否有一种方法可以将整数 DayOfWeek 返回直接转换为表示星期一、星期二等日期的字符串。

示例代码:

MessageBox.Show(Date.Today.DayOfWeek)

这将返回6(截至今天)。例如,有没有办法直接将其转换为Saturday?我真的不在乎它真正将它转换成什么,但我想取消我的 Select Case:

Select Case Date.Today.DayOfWeek
     Case 0
         day = "Sunday"
     Case 1
         day = "Monday"
     Case 2
         day = "Tuesday"
     Case 3
         day = "Wednesday"
     Case 4
         day = "Thursday"
     Case 5
         day = "Friday"
     Case 6
         day = "Saturday"
     Case Else
         day = "Apocalypse: we're all boned."
 End Select

谢谢:)

【问题讨论】:

  • 我认为 .NET 框架不支持您的 Case Else。太糟糕了...
  • MS 应该看看的东西……总有一天会发生的。虽然我稍后会在代码中使用day 时遇到错误,如果它不存在的话:P
  • 使用Case Else 没有任何问题。有更简单的方法来获取日期名称。然而,正如 Jon 所指出的,DayOfWeek 是一种枚举类型,所以它永远不会是 0 到 6 以外的任何值。
  • 为了强调其他人也说过的话,星期日是 0,而不是 7。msdn.microsoft.com/en-us/library/system.dayofweek.aspx

标签: vb.net date dayofweek select-case


【解决方案1】:

DateTimeFormatInfo.CurrentInfo.GetDayName.

【讨论】:

    【解决方案2】:

    更简单的方法:

    Dim day As String = Date.Today.DayOfWeek.ToString()
    

    【讨论】:

    • @ghord 这种技术只是将枚举转换为字符串值;你可能会做类似DateTime.Today.ToString("dddd", new CultureInfo("pt-br"))
    【解决方案3】:

    有一个 DateTime 格式:dddd

    Dim date1 As Date = #08/29/2008 7:27:15PM#
    date1.ToString("dddd", CultureInfo.CreateSpecificCulture("en-US"))
    

    使用 CultureInfo,您可以使用特定语言获取它(它是可选的)

    更多信息: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx#ddddSpecifier

    【讨论】:

      【解决方案4】:

      DateTime.DayOfWeek 不返回整数 - 它返回 DayOfWeek 类型的枚举。我希望它会自动转换为名称,但也许这是 VB 的微妙之处;也许与使用Date 而不是DateTime 有关?试试这个:

      MessageBox.Show(DateTime.Today.DayOfWeek.ToString())
      

      这不会是文化敏感的 - 它总是只显示枚举值的名称,用英文。如果这对您不利,请使用 Zyphrax 或 itowlson 的解决方案。

      【讨论】:

      • 这将返回不变的(美国英语)名称;可以调试或存储在数据库或其他任何东西中,但如果他正在显示它,他应该使用本地化字符串的东西。
      • @itowlson:我只是在编辑说类似的话,但不太具体。并非每个 UI 都需要本地化,IMO。有很多应用程序只能使用一种语言(想想非国际公司的内部应用程序)。如果该语言是英语,那会让生活更加轻松。
      • 谢谢。这段代码只是按时间表顺序引用我表单中的一些文本框。要显示的实际数据来自数据库:)
      【解决方案5】:

      Date.Today.DayOfWeek.ToString 将为您提供所需的内容。很好很容易。

      【讨论】:

        【解决方案6】:

        以防万一其他人看到这个例子。我认为应该是周日的案例 0。

        Case 0 
            day = "Sunday"
        

        【讨论】:

        • 您在这里看到的是对问题的评论,而不是答案。发布 cmets 作为规避规则的答案不可避免地会导致主持人干预。
        • 听起来不错。但是我搜索了这个示例代码,超出了问题的范围,它是不正确的。我花了一些时间弄清楚。我认为应该为未来的用户指出这一点,即使问题已经得到解答。
        猜你喜欢
        • 2010-10-03
        • 1970-01-01
        • 1970-01-01
        • 2014-03-18
        • 2015-06-10
        • 1970-01-01
        • 2012-08-25
        • 1970-01-01
        相关资源
        最近更新 更多