用户想要编辑开始日期。开始日期和结束日期之间的天数必须始终相同。
例如
开始日期最初为28/07/2014,结束日期为2014年8月1日
日期相隔4天
用户将开始日期更改为2014年6月1日
结束日期现在必须是05/06/2014
难以绕过这个逻辑。
答案 0 :(得分:3)
您只需使用DateTime
等Date.AddDays
方法,甚至更好:TimeSpan
:
Dim timeSpanBetween = endDate - startDate
startDate = New Date(2014, 6, 1)
endDate = startDate.Add(timeSpanBetween)
答案 1 :(得分:3)
这有两个方面:
计算两个日期之间的天数
就个人而言,我会使用我的Noda Time API,但你仍然可以使用BCL的DateTime
类型 - 从另一个中减去一个DateTime
来获得TimeSpan
},然后使用TimeSpan.TotalDays
属性。然后将结果转换为整数。 (你需要确保它们确实只是日期,以避免一天中的一小部分。)如果你愿意,你甚至可以保留TimeSpan
。
根据另一个日期调整一个日期
如果您知道要将两者分开多少天,则只需要适当地使用DateTime.AddDays
。例如,如果startDate
已更改:
endDate = startDate.AddDays(days)
如果endDate
发生了变化:
startDate = endDate.AddDays(-days)
答案 2 :(得分:1)
' global declaration
Dim d1, d2 As Date
d1 = CDate("28/07/2014")
d2 = CDate("01/08/2014")
' function to find the date difference
public sub date_difference(d1 as date,d2 as date)
MsgBox((d2 - d1).TotalDays)
end sub
答案 3 :(得分:0)
拿两个datetimepicker dtp_start_date& dtp_end_date。 为天数nm_days
之间的间隙取一个数值上升Public Class Form1
Dim start_date As New Date
Dim end_date As New Date
Dim main_load As Boolean
Private Sub dtp_start_date_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtp_start_date.ValueChanged
If main_load = True Then
Try
start_date = dtp_start_date.Value
end_date = start_date.AddDays(nm_days.Value)
dtp_end_date.Value = end_date
Catch ex As Exception
End Try
End If
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
main_load = True
start_date = dtp_start_date.Value
end_date = dtp_end_date.Value
End Sub
End Class