gen*_*eek 4 c# datetime timespan nullable c#-4.0
有没有一种优雅的方法来解决这个错误,而不是在if()中检查.HasValue然后添加Date,例如DateTimeUtcNow.Value?
// Compare nullable date time entity.End with utcnow but only compare up to minute precision
// for time.
//
if ((int)(entity.End - DateTime.UtcNow).TotalMinutes < 0)
{
// ASSERT: entity.End < UTCNow (i.e. 12/4/2012 3:56 PM < 12/4/2012 3:57 PM)
}
Run Code Online (Sandbox Code Playgroud)
错误:System.Nullable'不包含'TotalMinutes'的定义
我个人认为这是:
if (entity.End > DateTime.Now.AddMinutes(1))
{
...
}
Run Code Online (Sandbox Code Playgroud)
如果entity.End为null,则该条件为false .
我经常发现,而不是一个日期/时间与另一个日期/时间进行比较,并将其与TimeSpan(或您正在使用的任何类型)进行比较,计算下限或上限更清晰,并将其与可变日期/时间进行比较.在这种情况下,它确实干净利落.
编辑:好的,既然这个问题更清楚一点,我会把它写成:
DateTime now = DateTime.UtcNow;
DateTime lowerBound = new DateTime(now.Year, now.Month, now.Hour, now.Minute,
0, 0, DateTimeKind.Utc);
DateTime upperBound = now.AddMinutes(1);
if (entity.End >= lowerBound && entity.End < upperBound)
{
...
}
Run Code Online (Sandbox Code Playgroud)
我怀疑我可能仍然误解了......