我使用 DateAdd 功能将年份添加到我现有的日期,但我想转到该特定月份的最后日期。
我正在使用此代码:
Dim wr As Integer = Val(txtWar_per.Text)
Dim ins_dt As Date = dtpInstall.Value
Dim war_till As Date = DateAdd(DateInterval.Year, wr, dtpInstall.Value)
dtpWar_till.Value = war_till
输出:
dtpinstall.value= 12/1/2012
txtWar_per.text= 2
dtpWar_till.value=12/1/2014
但我希望 dtpWar_till.value :
31/1/2014
请尽早解决我的问题.. 这是非常非常紧急的。
答案 0 :(得分:2)
减去日期减去1以到达该月的第一天,添加一年和一个月,然后将另一天减去上个月的最后一天:
Dim war_till As Date = ins_dt.AddDays(1 - ins.dt.Day).AddMonths(13).AddDays(-1)
两次减去天数可确保它与具有不同天数的月份一起使用,例如从2013-01-30到2014-01-31而不是2014-03-01。
答案 1 :(得分:1)
更多代码,但更直观一些:
Dim year As Integer = ins_dt.Year + wr
Dim month As Integer = ins_dt.Month
dtpWar_till.Value = New DateTime(year, month, DateTime.DaysInMonth(year, month))
答案 2 :(得分:0)
尝试:
Dim war_till As Date = DateAdd(DateInterval.Day,-1,DateAdd(DateInterval.Month,2,DateAdd(DateInterval.Year, wr, dtpInstall.Value)))
答案 3 :(得分:0)
使用闰年测试
Dim tstDate1 As Date = #2/28/2011#
Dim tstDate2 As Date = #2/29/2012#
For numYears As Integer = 1 To 5
'add years and set date to the first day of the month
Dim newD As Date = New Date(tstDate1.Year + numYears, tstDate1.Month, 1)
'then add days in month-1 to date
newD = newD.AddDays(Date.DaysInMonth(newD.Year, newD.Month) - 1)
'show it
Debug.WriteLine(newD)
newD = New Date(tstDate2.Year + numYears, tstDate2.Month, 1)
newD = newD.AddDays(Date.DaysInMonth(newD.Year, newD.Month) - 1)
Debug.WriteLine(newD)
Next