因此,我正在尝试检查inputs = range(300)
Parallel(n_jobs=core_num)(delayed(loops)(i) for i in inputs)
。 Order
和ArriveTime
之间的差应在10分钟到2小时之间。我将所有内容格式化为我认为正确的格式,但是仍然出现错误。
我在OrderDate
中输入的值是ArriveTime
,在DateTime.Today
中输入OrderDate
。
代码:
DateTime.Now
答案 0 :(得分:3)
日期没有格式,它们是二进制值。该代码通过尝试将日期ti字符串然后转换回日期而导致错误。只需使用
TimeSpan diff=orderData.ArriveTime - orderData.OrderDate;
以TimeSpan的形式获得差异,例如:
var diff=orderData.ArriveTime - orderData.OrderDate;
var inRange= (diff>=TimeSpan.FromMinutes(10) && diff<TimeSpan.FromHours(2));
return inRange;
两个日期之间的差是持续时间,而不是日期。在.NET中,持续时间由TimeSpan类表示。您可以使用其构造函数或通过FromHours和FromMinutes
之类的方法来生成TimeSpan值如果OrderDate
和ArriveTime
为DateTime?
,您将得到TimeSpan?
而不是TimeSpan
。如果这些值中的任何一个为null,则差异也将为null。
在此示例中:
class Order{
public DateTime? OrderDate{get;set;}
public DateTime? ArriveTime{get;set;}
}
var orderData=new Order{};
TimeSpan? diff=orderData.ArriveTime - orderData.OrderDate;
diff
是null
。两次比较都会返回false
,因此inRange
将是false