2017-03-13 68 views
0

我有这样的方法:DAYOFWEEK - 获得天数

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)。在我的地区设置周中,星期一开始,应该是一个星期一和星期天7.

+1

这是VB,而不是C#。 –

+0

什么与'DateTime.Now.Day'绑定? (假设日期编号表示日期) – Plutonix

+0

对不起,关于C#。我对1 - 7的结果感兴趣 - 不是每个月的实际日子。 – serializer

回答

0

您不应该尝试针对.NET Framework提供的抽象。

您可以从特定的文化得到通用星期几号:

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,以确定此日期是否在一周的第一天为您文化。