从DateTime格式减去天数

时间:2017-07-19 09:34:10

标签: c# datetime timespan

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天类型?

6 个答案:

答案 0 :(得分:4)

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

  

无法隐式转换Type' System.DateTime'到了布尔'

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

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

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

我怀疑您希望将其与><的其他日期时间进行比较。

这可行,例如:

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