0

C# 中是否有一种方法可以像 SQLDateDiff方法一样比较日期,包括时间部分参数?

例如我有两个日期:

DateTime early = "2013.02.01 07:31:15";
DateTime soon = "2013.02.01 23:48:35";

if (Compare(early, soon, DAY) == true)
{
   //I want to be here
}

我想获得这两个对象在年月日相等的信息;其余的对我来说并不重要。

4

7 回答 7

5

您可以使用DateTime.Date

if(early.Date == soon.Date)
{
} 

如果你想要小时的准确性:

if(early.Date == soon.Date && early.Hour == soon.Hour)
{
} 

但是,使用此解决方案,您将拥有“12/03/1857 23:59”!=“13/03/1857 00:00”。如果你想检查他们的“距离”:

if(early.Substract(soon).Duration() <= TimeSpan.FromHours(1))
{
}

.Duration()获取时间跨度的“绝对”值(因为early.Substract(soon)可以是“正”或“负”)。

于 2013-02-01T15:29:04.327 回答
4

您可以使用 s 的Date属性DateTime来获取日期部分。

在您的情况下,您可以使用:

if (early.Date == soon.Date)
{
    ....
}
于 2013-02-01T15:28:43.607 回答
1

您可以使用DateTime.Subtract方法来找出差异。

System.TimeSpan diff1 = date2.Subtract(date1);

编辑

如果你想比较相等,你可以简单地使用相等运算符 ==

if(date1 == date2)
{
}
于 2013-02-01T15:27:45.983 回答
1

如果您想明确说明如何比较两个日期,我认为有点冗长没有什么问题:

public static bool YearMonthDayHourDateCompare(DateTime one, DateTime two)
{
    return (one.Year  == two.Year  &&
            one.Month == two.Month &&
            one.Day   == two.Day   &&
            one.Hour  == two.Hour  && 
            ...);
}

以描述您的比较的方式命名方法。更好的是,这可能是一种扩展方法:

public static bool CompareDateAndHour(this DateTime one, DateTime two)
{
    return (one.Date == two.Date &&
            one.Hour == two.Hour && 
            ...);
}

可以这样使用:

bool datesAreEqual = soon.CompareDateAndHour(two);
于 2013-02-01T15:30:58.863 回答
1

如果你想知道是否是同一天,你不能使用日期差异......

试试这个代码:

if(new TimeSpan(early.Ticks).TotalDays() == new TimeSpan(soon.Ticks).TotalDays()){
     // Equal
}
于 2013-02-01T15:31:30.480 回答
0
var diff=soon-early;
diff.TotalHours or diff.TotalMinutes etc...
于 2013-02-01T15:29:18.570 回答
0

要将两个日期与小时的准确性进行比较,请使用以下内容:

bool match = (soon - early).TotalHours < *your diff limit*;
于 2013-02-01T15:31:27.943 回答