如何将 1 个月添加到选定的 DateTimePicker
How to add 1 month to selected DateTimePicker
我在使用 DateTimePicker 时遇到问题。
我目前正在尝试做的是基于 lblPrevSem(上一学期)中的文本,它是从前一个屏幕的下拉列表中选择的,我想增加一定的时间来日期时间选择器。
Public Property CustomFormat As String
Dim SemesterMonths As Integer
Dim SemesterDays As Integer
Private Sub DeptCreatePrevSch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim SemesterYear() As String = DeptPrevSch.CboSem.Text.Split(",")
lblPrevSem.Text = SemesterYear(0)
cboYear.Text = Date.Now.Year
For i As Integer = 0 To 5
cboYear.Items.Add(Date.Now.Year + i)
cboYear.SelectedIndex = 0
Next
If InStr(lblPrevSem.Text, "Fall") Then
SemesterMonths = 1
ElseIf InStr(lblPrevSem.Text, "Spring") Then
SemesterMonths = 1
ElseIf InStr(lblPrevSem.Text, "Summer") Then
SemesterDays = 14
End If
Call dtpStart_ValueChanged(sender, e)
End Sub
Private Sub dtpStart_ValueChanged(sender As Object, e As EventArgs) Handles dtpStart.ValueChanged
Dim StartDate As Date
Dim StartStringDate As String
Dim EndDate As Date
Dim EndStringDate As String
dtpStart.Format = DateTimePickerFormat.Custom
dtpStart.CustomFormat = "MMMM dd, yyyy dddd"
StartDate = dtpStart.Value.ToString
StartStringDate = StartDate.ToString("MMMM dd, yyyy dddd")
lblRegStartDate.Text = StartStringDate
EndDate = dtpStart.Value.AddMonths(SemesterMonths)
EndDate = dtpStart.Value.AddDays(SemesterDays)
EndStringDate = EndDate.ToString("MMMM dd, yyyy dddd")
lblRegEndDate.Text = EndStringDate
End Sub
我可以让它在几天内添加就好了,但是当我尝试在 1 个月内添加时,它似乎根本不起作用。
我尝试了多种不同的方法来在 1 个月内添加,但到目前为止没有任何效果。我的壁橱在 30 天内增加了,但这还不包括有 31 天的月份。
Reg Start Date 是 DateTimePicker 的日期,Reg End Date 应该是根据 lblPrevSem 是
两个注册 Start/End 日期都显示为标签
(即秋季 = 1 个月,Spring = 1 个月,夏季 = 2 周)
您的问题是您在添加 SemesterMonths 值后重置了 EndDate 的值。您应该将 SemesterDays 值添加到 EndDate 变量,而不是使用 dtpStart.Value.AddDays(SemesterDays):
重置 EndDate 的值
EndDate = dtpStart.Value.AddMonths(SemesterMonths)
EndDate = EndDate.AddDays(SemesterDays)
只需获取 datetimepicker 值并将 .AddYears(0) 或 .AddDays(0) 或 AddMonths(0) 放在它后面。
但您也可以同时使用它们。
nextServiceDateTimePicker.Value.AddYears(0).AddDays(0).AddMonths(0);
只需将 0 替换为 i 并赋予它所需的值即可。
我在使用 DateTimePicker 时遇到问题。
我目前正在尝试做的是基于 lblPrevSem(上一学期)中的文本,它是从前一个屏幕的下拉列表中选择的,我想增加一定的时间来日期时间选择器。
Public Property CustomFormat As String
Dim SemesterMonths As Integer
Dim SemesterDays As Integer
Private Sub DeptCreatePrevSch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim SemesterYear() As String = DeptPrevSch.CboSem.Text.Split(",")
lblPrevSem.Text = SemesterYear(0)
cboYear.Text = Date.Now.Year
For i As Integer = 0 To 5
cboYear.Items.Add(Date.Now.Year + i)
cboYear.SelectedIndex = 0
Next
If InStr(lblPrevSem.Text, "Fall") Then
SemesterMonths = 1
ElseIf InStr(lblPrevSem.Text, "Spring") Then
SemesterMonths = 1
ElseIf InStr(lblPrevSem.Text, "Summer") Then
SemesterDays = 14
End If
Call dtpStart_ValueChanged(sender, e)
End Sub
Private Sub dtpStart_ValueChanged(sender As Object, e As EventArgs) Handles dtpStart.ValueChanged
Dim StartDate As Date
Dim StartStringDate As String
Dim EndDate As Date
Dim EndStringDate As String
dtpStart.Format = DateTimePickerFormat.Custom
dtpStart.CustomFormat = "MMMM dd, yyyy dddd"
StartDate = dtpStart.Value.ToString
StartStringDate = StartDate.ToString("MMMM dd, yyyy dddd")
lblRegStartDate.Text = StartStringDate
EndDate = dtpStart.Value.AddMonths(SemesterMonths)
EndDate = dtpStart.Value.AddDays(SemesterDays)
EndStringDate = EndDate.ToString("MMMM dd, yyyy dddd")
lblRegEndDate.Text = EndStringDate
End Sub
我可以让它在几天内添加就好了,但是当我尝试在 1 个月内添加时,它似乎根本不起作用。
我尝试了多种不同的方法来在 1 个月内添加,但到目前为止没有任何效果。我的壁橱在 30 天内增加了,但这还不包括有 31 天的月份。
Reg Start Date 是 DateTimePicker 的日期,Reg End Date 应该是根据 lblPrevSem 是
两个注册 Start/End 日期都显示为标签
(即秋季 = 1 个月,Spring = 1 个月,夏季 = 2 周)
您的问题是您在添加 SemesterMonths 值后重置了 EndDate 的值。您应该将 SemesterDays 值添加到 EndDate 变量,而不是使用 dtpStart.Value.AddDays(SemesterDays):
重置 EndDate 的值EndDate = dtpStart.Value.AddMonths(SemesterMonths)
EndDate = EndDate.AddDays(SemesterDays)
只需获取 datetimepicker 值并将 .AddYears(0) 或 .AddDays(0) 或 AddMonths(0) 放在它后面。
但您也可以同时使用它们。
nextServiceDateTimePicker.Value.AddYears(0).AddDays(0).AddMonths(0);
只需将 0 替换为 i 并赋予它所需的值即可。