DateCompare 在 C# 中就像在 SQL 中一样



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

例如,我有两个日期:

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
}

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

您可以使用

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)可以是"正"或"负")。

您可以使用 DateTimeDate 属性来获取日期部分。

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

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

您可以使用 DateTime.Subate 方法来查找差异。

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

编辑

如果要比较相等性,只需使用相等运算符==

if(date1 == date2)
{
}

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

试试这个代码:

if(new TimeSpan(early.Ticks).TotalDays() == new TimeSpan(soon.Ticks).TotalDays()){
     // Equal
}
如果您想

明确说明如何比较两个日期,我认为有点冗长没有任何问题:

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);
var diff=soon-early;
diff.TotalHours or diff.TotalMinutes etc...

要将两个日期与小时精度进行比较,请使用如下所示的内容:

bool match = (soon - early).TotalHours < *your diff limit*;

相关内容

  • 没有找到相关文章

最新更新