DateTime followingTrialDate = Convert.ToDateTime(row["FollowingTrialDate"]);
if (followingTrialDate.AddDays(-14))
{
ModuleBody = davaTarih.ToShortDateString() + " tarihli dava'ya 14 (on dört) gün kalmıştır.";
ModuleBody = "sayın ilgili, \r\n \r\n" + "esas no: " + esasNo + "\r\n" + "dava tarihi: " + davaTarih.ToShortDateString() + "\r\n" + "sonraki duruşma tarihi: " + sonrakidurusmaTar + "\r\n" + "kısa açıklama: " + kısaAciklama + "\r\n\r\n" + "bilginize,";
}
它会在" if"中出现错误。周期。错误:
无法隐式转换Type' System.DateTime'到了布尔'
我知道错误," if"循环获得bool值。但我无法得到约会 DateTime类型。如何从DateTime中减去14天类型?
答案 0 :(得分:4)
你正好减去日子。 followingTrialDate.AddDays(-14)
是正确的,它会返回followingTrialDate
减去14天(作为新的DateTime
)。问题是你在if语句中没有得到任何比较:
无法隐式转换Type' System.DateTime'到了布尔'
准确描述问题。您的代码类似于:
if (new DateTime()) {
// do something
}
产生完全相同的错误。如果日期时间是什么?它不能是true
或false
。 If
仅对布尔值进行操作。
我怀疑您希望将其与>
或<
的其他日期时间进行比较。
这可行,例如:
if (followingTrialDate.AddDays(-14) < DateTime.Now)
答案 1 :(得分:3)
if语句中有错误。函数AddDays返回DateTime(link)和不 bool。
如果您想减去天数,那么您走的是正确的路径:
DateTime dt = new DateTime(2017, 7, 20);
dt = dt.AddDays(-5);
Console.WriteLine(dt.ToString()); // output: 15. 07. 2017
答案 2 :(得分:1)
无法隐式转换类型'System.DateTime'为'bool'
DateTime.AddDays方法返回一个新的DateTime,它将指定的天数添加到此实例的值中。而if
期望一个评估为布尔值的条件。这种不匹配会导致上述指定的错误。
如何从DateTime类型中减去14天?
为此,您必须将AddDays()
的结果分配给DateTime变量,如下所示:
DateTime PrevDate = followingTrialDate.AddDays(-14);
// Proceed with PrevDate
答案 3 :(得分:0)
DateTime followingTrialDate = Convert.ToDateTime(row["FollowingTrialDate"]).AddDays(-14);
会做到这一点。您可能希望在此处执行一些错误处理(如果row["FollowingTrialDate"]
无法转换为DateTime并因此抛出异常,那该怎么办?)。
剩下的唯一问题是您要在if
条件中检查的内容。
答案 4 :(得分:0)
if
语句必须是布尔表达式 - 日期不是布尔表达式
相反,当您从DataRow获取日期时,它可能为空,为什么不尝试这样的事情,这将检查行是否为空,如果不是,则在日期之前14天计算。
if (row["FollowingTrialDate"] != null)
{
DateTime followingTrialDate = Convert.ToDateTime(row["FollowingTrialDate"]);
followingTrialDate = followingTrialDate.AddDays(-14);
ModuleBody = davaTarih.ToShortDateString() + " tarihli dava'ya 14 (on dört) gün kalmıştır.";
ModuleBody = "sayın ilgili, \r\n \r\n" + "esas no: " + esasNo + "\r\n" + "dava tarihi: " + davaTarih.ToShortDateString() + "\r\n" + "sonraki duruşma tarihi: " + sonrakidurusmaTar + "\r\n" + "kısa açıklama: " + kısaAciklama + "\r\n\r\n" + "bilginize,";
}
答案 5 :(得分:0)
这里我们还有另一种方法可以从DateTime中减去天数
DateTime oldDt = dt.Subtract(TimeSpan.FromDays(14));
row["FollowingTrialDate"]
应解析为DateTime
进行比较。
例如,格式为mm/dd/yyyy
您可以这样处理:
if(row["FollowingTrialDate"]!=null
{
DateTime dt=DateTime.ParseExact(row["FollowingTrialDate"].ToString(),"mm/dd/yyyy");
if( dt < oldDt ) //or any date comparison you like
{
//code here
}
}