比较两个日期时间小时和分钟(不是秒)?

时间:2015-02-12 17:59:42

标签: c#

这可能是个愚蠢的问题。但我在这里缺少逻辑。我必须将日期与日期时间与小时和分钟(而不是秒)进行比较。

如果第一个字段时间早于第二个字段执行条件

现在我正在做if (Convert.ToDateTime(newItem["Modified"]) < Convert.ToDateTime(properties.ListItem["Modified"]))

示例if("02/12/2015 11:58" < "02/12/2015 12:01")然后执行条件。

5 个答案:

答案 0 :(得分:2)

您可以使用大多数相同的值创建新的DateTime对象,但将秒设置为0.示例:

DateTime date1WithoutSeconds = new DateTime(dt1.Year, dt1.Month, dt1.Day, dt1.Hour, dt1.Minute, 0);
DateTime date2WithoutSeconds = new DateTime(dt2.Year, dt2.Month, dt2.Day, dt2.Hour, dt2.Minute, 0);

bool b = date1WithoutSeconds < date2WithoutSeconds;

答案 1 :(得分:0)

您可以减去这两个日期,如果差异的TotalSeconds小于60并且最小值相同,那么它们是相等的:

var first = Convert.ToDateTime(newItem["Modified"]);
var second = Convert.ToDateTime(properties.ListItem["Modified"]);

if (first.Subtract(second).TotalSeconds < 60 && first.Minute == second.Minute)
{
    Console.WriteLine("They are equal");
}

答案 2 :(得分:0)

另一种应该有效的方法。

DateTime date1 = Convert.ToDateTime(newItem["Modified"]);
DateTime date2 = Convert.ToDateTime(properties.ListItem["Modified"]));

if( date1.AddSeconds(-date1.Second) < date2.AddSeconds(-date2.Second) ) {

}

但是,我想知道......是否真的需要忽略秒和“下限”结果,以便12:59:00与12:59:59相同但不同于12:58: 59即使只有一秒钟的差异......或者你是否需要知道差异大于一分钟?如果您真的只想确保它相隔一分钟,请使用TimeSpan (date1 - date2).TotalSeconds > 60

我怀疑这是否可能,但如果你的DateTime是一个字符串WITH毫秒,那么执行:

if( date1.AddSeconds(-date1.Second).AddMilliseconds(-date1.Millisecond) <
    date2.AddSeconds(-date2.Second).AddMilliseconds(-date2.Millisecond) ) 
{

}

答案 3 :(得分:0)

您应该使用DateTime.CompareTo方法。

抓取并将两个日期分配为DateTime对象:

DateTime date = Convert.ToDateTime(newItem["Modified"]);
DateTime compareDate = Convert.ToDateTime(properties.ListItem["Modified"]);

现在可以使用DateTime对象的CompareTo方法来查看实例是否早于,等于或晚于另一个,分别返回-1,0和1。

所以,按照你的例子:if(“02/12/2015 11:58”&lt;“02/12/2015 12:01”),第一个日期是date,第二个是compareDate,代码:

date.CompareTo(compareDate);

将返回-1,告诉您调用该方法的实例早于您要比较的对象。

这是the MSDN

答案 4 :(得分:-1)

首先,您在问题中提到的示例数据不包括秒数,因此默认情况下Convert.ToDateTime会将'00'指定为秒,因此比较没有秒。 但是,假设您确实提供了实际数据中的秒数。您可以使用以下内容:

var date1 = Convert.ToDateTime(newItem["Modified"]);
var date2 = Convert.ToDateTime(properties.ListItem["Modified"]);
if (date1.AddSeconds(-date1.Second) < date2.AddSeconds(-date2.Second))