比较两个DateTimeOffset对象

时间:2012-08-23 01:05:44

标签: c# .net silverlight

我希望在几天内得到两个DateTimeOffset对象的差异(例如,检查差异是否少于40天)。

我知道可以将其更改为FileTime,但想知道是否有更好的方法。

2 个答案:

答案 0 :(得分:5)

最简单的方法是减去彼此的偏移量。它返回一个TimeSpan,你可以比较。

var timespan = DateTimeOffset1 - DateTimeOffset2;
// timespan < TimeSpan.FromDays(40);
// timespan.Days < 40

我倾向于将其添加到传入TimeSpan的另一种方法中,因此您不仅限于几天或几分钟,而只是一段时间。类似的东西:

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天”。

答案 1 :(得分:2)

DateTimeOffset有一个Subtract运算符,它返回TimeSpan

if((dto1 - dto2).Days < 40)
{
}