如何处理系统错误.ArgumentOutOfRangeException:添加或减去的值导致一个不可表示的日期时间
本文关键字:时间 日期 可表示 一个 系统错误 处理 何处理 ArgumentOutOfRangeException 添加 | 更新日期: 2023-09-27 18:16:13
我创建了一个助手方法,将UTC日期时间转换为特定时区的日期时间。
public DateTime ConvertToSpecificTimeZone(DateTime utcDateTime, string utcOffset)
{
return ConvertTimeZone(utcDateTime, utcOffset.Trim());
}
private DateTime ConvertTimeZone(DateTime dateTime, string timeOffset)
{
int offsetSign = (timeOffset.StartsWith("-") ? -1 : 1);
timeOffset = timeOffset.TrimStart('+').TrimStart('-');
if (timeOffset == "00:00")
{
return dateTime;
}
else
{
string[] offsetArgs = timeOffset.Split(':');
return dateTime.AddHours(Int32.Parse(offsetArgs[0]) * offsetSign).AddMinutes(Int32.Parse(offsetArgs[1]) * offsetSign);
}
}
当在MVC项目中从ItemController调用它时
StartDate = new Helper().ConvertToSpecificTimeZone(properties.StartDate, this.UTCTimeOffset).ToString("MM/dd/yyyy");
有时会报错,比如
系统。ArgumentOutOfRangeException:添加或减去的值导致一个不可表示的DateTime。参数名称:取值atSystem.DateTime。AddTicks(Int64值)atMyproject.Utility.Helper。ConvertTimeZone(DateTime在myproject . controller . itemcontroller . manage(字符串param)
请告诉我如何处理这个错误在我的代码
我猜您在属性中有一个初始化的日期时间。StartDate可以变量。初始化日期时间的值为1/1/0001 12:00:00。
您可以在ConvertTimeZone函数中添加此检查以捕获此类问题或/并尝试修复业务逻辑流。
if (dateTime == default(DateTime))
throw new ArgumentOutOfRangeException("Please set the initial datetime value");