当c#中的时间相等时,DateTime.Compare会失败

时间:2016-02-19 17:27:39

标签: c# datetime

我正在比较不包括秒的日期时间。比较条件的两个日期时间值相等。enter image description here

     DateTime d1 = Convert.ToDateTime(properties.ListItem["Modified"]).AddSeconds(-Convert.ToDateTime(properties.ListItem["Modified"]).Second);
     DateTime d2 = DateTime.Now.AddSeconds(-DateTime.Now.Second);

  if (properties.ListItem["Modified"] != null && DateTime.Compare(d1,d2)!= 0)
  {
     //If condition still executes even after dates are equal.

3 个答案:

答案 0 :(得分:0)

你忘记了几毫秒的部分 以下是将DateTime正确截断为整分钟的函数:

static DateTime TrancateToMinutes(DateTime dt)
{
    return dt.Date.AddMinutes((int)dt.TimeOfDay.TotalMinutes);
}

答案 1 :(得分:0)

您的毫秒和刻度不相等。

使用

public void AreEqual(DateTime d1, DateTime d2)
{
     return d1.Date == d2.Date && d1.Hour == d2.Hour && d1.Minute == d2.Minute;
}

public void AreEqual(DateTime d1, DateTime d2)
{
     return d1.ToString("yyyyMMddHHmmss") == d2.ToString("yyyyMMddHHmmss");
}

在后者中,您可以编辑format参数以确定相等而不是datetime对象的长链属性。

答案 2 :(得分:0)

使用扩展方法通过将ex和millisecs排除在前

来仅提取日期和时间
public static DateTime ZeroMilliseconds(this DateTime value) 
{
  return new DateTime(value.Year, value.Month, value.Day, 
    value.Hours, value.Minutes, value.Seconds);
}