2017-07-19 130 views
0
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”循环中给出错误。错误:从DateTime格式中减去天数

Cannot implicitly Convert Type 'System.DateTime' to 'bool'

我知道错误,“if”循环获取布尔值。但我无法从DateTime类型获得 的日期。如何从DateTime类型减去14天?

+9

你想要什么你,如果条件检查? –

+0

'if(followingTrialDate == followingTrialDate.AddDays(-14))',这足够吗?作为一般规则,如果条件必须使用'bool'或返回'bool'的表达式。 –

+0

为了决定是否进入if块,if必须将某些事情评估为真或假。 DateTime.addDays结果是另一个DateTime对象。你不能将'DateTime'解释为真或假。你的if语句没有任何意义。在英语中,您的if语句的内容为“如果trialDate减去14天”。这是不完整和荒谬的。你是否想将它与其他日期,也许是当前日期进行比较? – ADyson

回答

4

您正在减去罚款日子。 followingTrialDate.AddDays(-14)是正确的,它将返回followingTrialDate减去14天(作为新的DateTime)。问题是你在if语句中没有任何比较:

Can not implicitly Convert Type 'System.DateTime' to 'bool'

准确地描述了问题。您的代码类似于:

if (new DateTime()) { 
    // do something 
} 

这产生完全相同的错误。如果日期时间是什么?它不能是truefalseIf只对布尔值进行操作。

我怀疑你想比较一下><

这样的工作,例如:

if (followingTrialDate.AddDays(-14) < DateTime.Now) 
0
DateTime followingTrialDate = Convert.ToDateTime(row["FollowingTrialDate"]).AddDays(-14); 

会做的伎俩。但是,您可能想在此处执行一些错误处理(如果row["FollowingTrialDate"]无法转换为DateTime并因此引发异常?)。

剩下的唯一问题就是你想要检查你的if条件。

2

您在if语句中有错误。函数AddDays返回DateTime(link)和而不是布尔值。

如果你想减去天,你是正确的道路上:

DateTime dt = new DateTime(2017, 7, 20); 
dt = dt.AddDays(-5); 
Console.WriteLine(dt.ToString()); // output: 15. 07. 2017 
0

if语句必须一个布尔表达式 - 日期不是一个布尔表达式

而是因为你是让你的来自DataRow的日期,它可能为空,为什么不尝试这样的事情,这将检查行是否为空,如果没有,然后计算日期前14天。

1

Cannot implicitly Convert Type 'System.DateTime' to 'bool'

DateTime.AddDays方法返回一个新的日期时间,增加了天的指定数量的此实例的值。而if期望一个评估为布尔值的条件。这种不匹配会导致上述指定的错误。

how to subtract from DateTime type 14 days ?

对于这一点,你必须的AddDays()结果分配给一个DateTime变量如下所示:

DateTime PrevDate = followingTrialDate.AddDays(-14); 
// Proceed with PrevDate 
0

这里,我们另辟蹊径,从日期时间

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 
    } 
}