2017-05-25 49 views
0

我想添加一个星期到一个给定的日期使用扩展方法 ,然后检索一周中的第一天的日期(从AddWeeks函数返回的日期)vb.net添加一个星期到给定的日期

Private Sub doSomething() 
    Dim dt As DateTime = DateTime.Now.AddWeeks(1) 

    dt = dt.StartOfWeek(dt.DayOfWeek) ' The year returned here is 0001 
End Sub 

<Extension()> 
    Public Function AddWeeks(ByVal dt As DateTime, numOfWeeks As Integer) As 
    DateTime 
     Return dt.AddDays(numOfWeeks * 7) 
End Function 
<Extension()> 



    <Extension()> 
Public Function StartOfWeek(ByVal dt As DateTime, start As DayOfWeek) As DateTime 
    Dim diff As Integer = dt.DayOfWeek - start 
    If (diff < 0) Then 
     diff += 7 
    End If 

    Return dt.AddDays(-diff) 
End Function 

这段代码的问题是,返回的日期是与错误的一年,它总是喜欢dd/mm/0001

+1

我刚刚试过你的代码,它不会以'0001'返回年份。它不起作用,因为'StartOfWeek'方法是错误的,但与返回为'dd/mm/0001'的日期无关 – Pikoh

回答

0

要到一周的第一天尝试在扣除一天,直到你到达星期一是这样的:

Public Function StartOfWeek(ByVal dt As DateTime, start As DayOfWeek) As DateTime 

    If Not dt.DayOfWeek = DayOfWeek.Monday Then 

     While dt.DayOfWeek <> DayOfWeek.Monday 

      dt = dt.AddDays(-1) 

     End While 

    End If 

    Return dt 

End Fuction 
相关问题