c# - 如何在 C# 中为将来的日期修复 ArgumentOutOfRangeException
问题描述
我有一个如下所示的用于日期时间处理的 C# 代码,并且想知道如何修复它。
//Value of effective date
api_reqBody["effectiveDate"] = DateTime.Today.AddDays(2).ToString(Helper.DATE_FORMAT_API);
//Value of Maturity date
var effDate = Convert.ToDateTime(api_reqBody["effectiveDate"]);
api_reqBody["updatedLoanAccount"]["maturityDate"] =
new DateTime(effDate.Year + uServiceSupport.H300IORIL_MAXTERM_YEARS, effDate.Month, effDate.Day + 1).ToString(Helper.DATE_FORMAT_API);
// Value of H300IORIL_MAXTERM_YEARS is 5 .
我得到了一个 ArgumentOutOfRangeException 用于上述代码的日期时间处理 - 当它今天在 29/05 运行时。请参阅下面的消息
如果我将生效日期更改为 AddDays(3) ,它会再次开始工作。但我想更可靠地修复它
api_reqBody["effectiveDate"] = DateTime.Today.AddDays(3).ToString(Helper.DATE_FORMAT_API);
解决方案
将时间段添加到DateTime对象的正确方法是使用这些Add
方法。因此,在您的情况下,您将AddYears
首先使用,然后AddDays
:
api_reqBody["updatedLoanAccount"]["maturityDate"] =
new DateTime(effDate.Year, effDate.Month, effDate.Day)
.AddYears(uServiceSupport.H300IORIL_MAXTERM_YEARS)
.AddDays(1)
.ToString(Helper.DATE_FORMAT_API);
这使您远离诸如每月天数、闰年等烦扰。
推荐阅读
- python - Mongodb平均大小跳跃磁盘使用量翻倍
- power-automate - Microsoft Flow 邮件正文多部分语法
- data-structures - 堆栈缓冲区溢出、堆栈下溢和堆栈溢出有什么区别?
- google-cloud-platform - Google Cloud Platform 项目共享快照
- laravel - Laravel - 将数据透视表中的值与相关表进行比较
- python - 如何使用带代理的不和谐 python 机器人?
- excel - Excel - SumIF Cell Value is between date range & another Cell is False
- apache-spark - How to set group.id for consumer group in kafka data source in Structured Streaming?
- php - INSERT INTO or Update
- android - Android - 活动关闭时取消 JobIntent 服务