从 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
}
这会产生完全相同的错误。如果日期时间是什么?它不能是 true
或 false
。 If
仅对布尔值进行运算。
我怀疑您想将它与 >
或 <
的其他日期时间进行比较。
这会起作用,例如:
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
}
}
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
}
这会产生完全相同的错误。如果日期时间是什么?它不能是 true
或 false
。 If
仅对布尔值进行运算。
我怀疑您想将它与 >
或 <
的其他日期时间进行比较。
这会起作用,例如:
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
}
}