2017-05-25 51 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 
相關問題