我想在两天内得到两个DateTimeOffset对象的差异(例如,检查差异是否小于40天)。比较两个DateTimeOffset对象
我知道它可以通过将其更改为FileTime来完成,但是想知道是否有更好的方法来做到这一点。
我想在两天内得到两个DateTimeOffset对象的差异(例如,检查差异是否小于40天)。比较两个DateTimeOffset对象
我知道它可以通过将其更改为FileTime来完成,但是想知道是否有更好的方法来做到这一点。
最简单的方法是从彼此中减去偏移量。它返回一个TimeSpan
您可以比较。
var timespan = DateTimeOffset1 - DateTimeOffset2;
// timespan < TimeSpan.FromDays(40);
// timespan.Days < 40
我更愿意将其添加到传递一个时间跨度的另一种方法的能力,这样的话你不局限于天或分钟,但只是一个时间跨度。喜欢的东西:
bool IsLaterThan(DateTimeOffset first, DateTimeOffset second, TimeSpan diff){}
为了好玩,如果你爱流利式代码(我不是一个巨大的风扇之外吧测试和配置外)
public static class TimeExtensions
{
public static TimeSpan To(this DateTimeOffset first, DateTimeOffset second)
{
return first - second;
}
public static bool IsShorterThan(this TimeSpan timeSpan, TimeSpan amount)
{
return timeSpan > amount;
}
public static bool IsLongerThan(this TimeSpan timeSpan, TimeSpan amount)
{
return timeSpan < amount;
}
}
将使类似:
var startDate = DateTimeOffset.Parse("08/12/2012 12:00:00");
var now = DateTimeOffset.UtcNow;
if (startDate.To(now).IsShorterThan(TimeSpan.FromDays(40)))
{
Console.WriteLine("Yes");
}
其中的内容类似于“如果从开始日期到现在的时间少于40天”。
DateTimeOffset
有一个返回TimeSpan
减法运算符:
if((dto1 - dto2).Days < 40)
{
}
只是一个供参考:您发布的MSDN的链接'DateTimeOffset'文档中有你的答案写在同一页上。减法:从另一个中减去一个DateTimeOffset对象并产生一个时间间隔,甚至在页面底部包含一个减法示例。 –