【问题标题】:DayOfWeek - get day numberDayOfWeek - 获取天数
【发布时间】:2017-03-13 22:29:44
【问题描述】:

我有这个方法:

Dim dayofweek As Integer = CInt(DateTime.Now.DayOfWeek)
Dim startdayvalue As Integer = 0
Select Case args(1).ToLower
    Case "monday"
        startdayvalue = 1
    Case "tuesday"
        startdayvalue = 2
    Case "wednesday"
        startdayvalue = 3
    Case "thursday"
        startdayvalue = 4
    Case "friday"
        startdayvalue = 5
    Case "saturday"
        startdayvalue = 6
    Case "sunday"
        startdayvalue = 7
End Select

Return (dayofweek - startdayvalue + 7) Mod 7 + 1

args(1) 是用户可以输入的“星期一”到“星期日”之类的一天。对于给定的区域设置,我希望它始终以值 1 开头。我猜我的最后一行有问题,因为它给了我错误的值。例如,它给我星期一 = 1(正确)星期二 = 7(不正确)星期日 (2)。在我的区域设置中,一周从星期一开始,应该是 1 号和 7 号星期日。

【问题讨论】:

  • 这是 VB,不是 C#。
  • DateTime.Now.Day 有什么问题? (假设天数表示日期)
  • 对 c# 感到抱歉。我对 1 - 7 的结果感兴趣 - 而不是一个月中的实际日期。

标签: vb.net regional-settings


【解决方案1】:

您不应该尝试违背 .NET Framework 提供的抽象。

您可以从给定的文化中获取通用的 DayOfWeek 编号:

Dim ci As System.Globalization.CultureInfo
ci = New System.Globalization.CultureInfo("de-DE")
Dim fdow As System.DayOfWeek
fdow = ci.DateTimeFormat.FirstDayOfWeek

您可以使用此DayOfWeek 与您的 DateTime.DayOfWeek 进行比较,以确定该日期是否在您所在文化的一周的第一天。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2021-09-03
    • 2018-06-04
    • 2020-08-01
    相关资源
    最近更新 更多