从 DateTime 格式中减去天数

Subtract days from the DateTime format

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"循环中报错。错误:

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

我知道错误,"if" 循环获取 bool 值。但我无法从 日期时间类型。如何从 DateTime 类型中减去 14 天?

你正在减去天数。 followingTrialDate.AddDays(-14) 是正确的,它 returns 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)
DateTime followingTrialDate = Convert.ToDateTime(row["FollowingTrialDate"]).AddDays(-14);

会成功的。不过,您可能想在此处进行一些错误处理(如果 row["FollowingTrialDate"] 无法转换为 DateTime 并因此引发异常怎么办?)。

剩下的唯一问题是您要在 if 条件中检查什么。

您的 if 语句有误。函数 AddDays returns DateTime (link) and not bool.

如果你想减去天数,你的方法是正确的:

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

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,";
}

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

DateTime.AddDays 方法 Returns 一个新的 DateTime,它将指定的天数添加到此实例的值中。而 if 期望计算结果为布尔值的条件。这种不匹配会导致上述指定的错误。

how to subtract from DateTime type 14 days ?

为此,您必须将 AddDays() 的结果分配给 DateTime 变量,如下所示:

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

这里我们有另一种方法可以从 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
   }
}