【问题标题】:Most efficient way to get the current day in number format?以数字格式获取当前日期的最有效方法?
【发布时间】:2015-10-29 05:13:59
【问题描述】:

我有这段代码来获取当前日期(例如星期一、星期二)并将其转换为数字格式,以saturday = 1monday = 2 等开头。

    Dim Current_Day As String = Format(Now, "dddd")
    Dim Day_Name_Val As String = "0"

    Select Case Current_Day
        Case "Saturday"
            Day_Name_Val = "1"
        Case "Monday"
            Day_Name_Val = "2"
        Case "Tuesday"
            Day_Name_Val = "3"
        Case "Wednesday"
            Day_Name_Val = "4"
        Case "Thursday"
            Day_Name_Val = "5"
        Case "Friday"
            Day_Name_Val = "6"
        Case "Sunday"
            Day_Name_Val = "7"
    End Select

有没有一种有效或更好的方法来做到这一点?也许是 vb.net 的内置函数?

【问题讨论】:

    标签: vb.net performance dayofweek


    【解决方案1】:

    这种场景可以使用DayOfWeek枚举。

      Dim dayNumber As Integer = Now.DayOfWeek()
    

    【讨论】:

    • 太好了!但是这是错误的,因为我仍然需要使用“枚举”,因为在该代码中 friday = 5friday should be = 6
    【解决方案2】:

    因为DayOfWeek 的默认值是:

    Enum DayOfWeek 
        Sunday = 0
        Monday = 1
        Tuesday = 2
        Wednesday = 3
        Thursday = 4
        Friday = 5
        Saturday = 6
    End Enum
    

    我只想定义你自己的:

    Enum MyDayOfWeek 
        Saturday = 1
        Monday = 2
        Tuesday = 3
        Wednesday = 4
        Thursday = 5
        Friday = 6
        Sunday = 7
    End Enum
    

    这样你可以做这样的事情:

    Dim Day_Name_Val = Convert.ToInt32([Enum].Parse(GetType(MyDayOfWeek),
        DateTime.Now.DayOfWeek.ToString()))
    

    Fiddle Demo

    【讨论】:

      【解决方案3】:

      你可以使用

      int dayInNumber = (int)Now.DayOfWeek
      

      以数字形式获取当前日期。如果是星期天,你可能想做一些类似

      的事情
       if(dayInNumber == 0){ dayInNumber = 7;}
      

      因为枚举从 0 开始

      代码采用 C# 语法,但您可以将其转换为 vb.net 中的等效语法

      【讨论】:

        猜你喜欢
        • 2011-03-25
        • 2013-08-17
        • 2011-12-06
        • 2017-11-18
        • 2016-05-29
        • 2017-06-18
        • 2015-06-07
        • 2021-04-03
        • 2016-05-25
        相关资源
        最近更新 更多