【问题标题】:vb.net add one week to a given datevb.net 在给定日期添加一周
【发布时间】:2017-05-25 11:22:47
【问题描述】:

我正在尝试使用扩展方法将一周添加到给定日期 然后检索一周中第一天的日期(从 AddWeeks 函数返回的日期)

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

【问题讨论】:

  • 我刚刚尝试了您的代码,但它没有将年份返回为0001。它不能正常工作,因为 StartOfWeek 方法错误,但与返回为 dd/mm/0001 的日期无关

标签: .net vb.net datetime


【解决方案1】:

要到达一周的第一天,请尝试扣除一天,直到您到达星期一,如下所示:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多