C#中年,月和日参数的不可表示的DateTime
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中年,月和日参数的不可表示的DateTime相关的知识,希望对你有一定的参考价值。
我正面临一些错误,如“年,月,日参数描述不可表示的DateTime”。但是当我使用另一个数据库时出现这个问题,否则我写的代码工作正常。
为了检查目的,我将我的PC日期时间从11月改为12月,而不是相同的代码在不同的数据库工作正常。但我没有得到如何解决这个错误。我在它崩溃的地方附上了一些代码。
var vi = session.Query<TJERecurMaster>().ToList();
TJEShedulDetail tp = new TJEShedulDetail();
var RecurMasterList = (from v in vi
join jj in session.Query<TJEShedulDetail>()
on v.FMasterID equals jj.TJERecurMaster.FMasterID into jjv
from jv in jjv.DefaultIfEmpty(tp)
where v.FInactive == false && v.TSCCompany == objCompany && v.TSCProperty == objProp
orderby v.FDescription descending
select new RecurMasterNotification
{
TSCompanyID = CompanyID,
JeRecurDetail = v.TJERecurDetails,
FMasterID = v.FMasterID,
FScheduleID = jv.FScheduleID,
FDescription = v.FDescription,
FPostdate = jv.FLastNotification != null ? jv.FLastNotification : (v.FSetDay != 0 ? new DateTime(DateTime.Now.Year, DateTime.Now.Month, Convert.ToInt32(v.FSetDay)) : DateTime.Now),
FAmount = v.TJERecurDetails.Where(P => P.FTranType == "D").Sum(P => P.FAmount)
- v.TJERecurDetails.Where(P => P.FTranType == "C").Sum(P => P.FAmount),
FLastCreated = jv.FLastNotification,
FNotes = v.FNotes,
FJEType = v.FJEType,
FInactive = v.FInactive,
Frequency = jv.FFrequency,
FDateSelection = jv.FDateSelection,
FNextNotification = jv.FNextNotification,
FLastCreatedString = jv.FLastNotification == jv.FNextNotification ? string.Empty : jv.FLastNotification.ToString(),
}).ToList();
这种错误的解决方案是什么?
答案
我希望在这一行上发生错误:
FPostdate = jv.FLastNotification != null ? jv.FLastNotification : (v.FSetDay != 0 ? new DateTime(DateTime.Now.Year, DateTime.Now.Month, Convert.ToInt32(v.FSetDay)) : DateTime.Now)
特别是这部分:
new DateTime(DateTime.Now.Year, DateTime.Now.Month, Convert.ToInt32(v.FSetDay))
在这里,您可以创建当前年份和月份的新日期,以及一些v.FSetDay
。但是,如果FSetDay在一个月内(如11月)只有30天,那该怎么办?或者它有另一个非法值,如<0或> 31?
你需要决定如何处理它。你能忽略高于本月天数的价值吗?有一种DaysInMonth方法可以在这里使用。
以上是关于C#中年,月和日参数的不可表示的DateTime的主要内容,如果未能解决你的问题,请参考以下文章