0

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

私の問題を早めに解決してください。それは非常に、非常に、非常に緊急です。

4

4 に答える 4

2

日付から 1 を引いて月の最初の日を取得し、年と月を加算してから、前月の最終日から別の日を減算します。

Dim war_till As Date = ins_dt.AddDays(1 - ins.dt.Day).AddMonths(13).AddDays(-1)

日を 2 回減算すると、異なる日数の月でも確実に機能します。たとえば、2013-01-30 から 2014-03-01 ではなく 2014-01-31 になります。

于 2013-03-15T11:07:06.047 に答える
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))
于 2013-03-15T11:30:16.120 に答える
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
于 2013-03-29T14:52:44.063 に答える
0

試す:

Dim war_till As Date = DateAdd(DateInterval.Day,-1,DateAdd(DateInterval.Month,2,DateAdd(DateInterval.Year, wr, dtpInstall.Value)))
于 2013-03-15T11:08:00.873 に答える