Error: System.ArgumentOutOfRangeException: 'Year, Month, and Day parameters describe an un-representable DateTime.'

问题描述 投票:0回答:1

有人可以帮助我吗?

我的算法应该是这样的: (注意:我使用的是 DevExpress 的 DateEdit 而不是 DateTimePicker)

这是我的输出 OBTAForTheMonthDateEdit - DateEdit1 OBTADeadlineDateEdit - DateEdit2(禁用仅供显示使用) LiquidationDeadlineDateEdit - DateEdit3(禁用仅供显示使用)

Example: OBTAForTheMonthDateEdit 选择的日期是= 12/1/2022(你可以选择任何一天都没有关系) 显示:OBTADeadlineDateEdit = 11/18/2022(应该是该月的第 18 天,并且在您选择的月份之前。) LiquidationDeadlineDateEdit = 1/5/2023(应该是该月的第 5 天,在您选择的月份之后。)

我使用此代码但出现错误:System.ArgumentOutOfRangeException:“年、月和日参数描述了无法表示的日期时间。”

    Private Sub OBTAForTheMonthDateEdit_TextChanged(sender As Object, e As EventArgs) Handles OBTAForTheMonthDateEdit.TextChanged
       Dim dt As Date = OBTAForTheMonthDateEdit.EditValue

       OBTADeadlineDateEdit.Text = New DateTime(dt.Year, dt.Month - 1, 18)
       LiquidationDeadlineDateEdit.Text = New DateTime(dt.Year, dt.Month + 1, 5)
    End Sub

请帮我解决这个问题。非常感谢!

vb.net devexpress windows-forms-designer
1个回答
0
投票

示例:OBTAForTheMonthDateEdit 所选日期为 = 12/1/2022

如果那是真的那么你认为

dt.Month - 1
的价值是多少?它将为零。零是有效月份吗?不,不是,所以这是你的问题。与其先添加或减去月份值然后构建日期,不如先构建日期,然后添加或减去月份:

OBTADeadlineDateEdit.Text = New DateTime(dt.Year, dt.Month, 18).AddMonths(-1)
LiquidationDeadlineDateEdit.Text = New DateTime(dt.Year, dt.Month, 5).AddMonths(1)
© www.soinside.com 2019 - 2024. All rights reserved.