比较两个日期时间 - 没有小时和秒

时间:2009-08-17 07:27:06

标签: c#

正如标题所述,在没有时间和秒数的情况下,与DateTime进行比较的最佳方法是什么?

我不想将我的日期转换为字符串,以及像

这样的解决方案
  

DateTime.Now.Year == last.Year && DateTime.Now.Month == last.Month && DateTime.Now.Day == last.Day

非常难看。

编辑:天啊,我觉得多么愚蠢。当然,您可以使用Date属性。

“另一个问题”:将DateTime与年,月,日,小时,分钟,而不是秒进行比较的最佳方法是什么?

由于

7 个答案:

答案 0 :(得分:18)

这是:你在寻找什么?

DateTime.Now.Date

答案 1 :(得分:3)

查看Date属性,然后您可以将dt1.Date与dt2.Date进行比较。

答案 2 :(得分:1)

您可以使用DateTime对象的Date属性。

例如, DateTime dateOne

dateOne.Date属性将仅使用日期部分。

答案 3 :(得分:1)

比接受的答案更简单,你可以简单地使用:

DateTime.Today

答案 4 :(得分:1)

关于没有秒的比较,只需使用:

public static bool EqualsIgnoringSeconds(this DateTime source, DateTime target)
{
    return TimeSpan.FromTicks(source.Ticks).TotalMinutes == TimeSpan.FromTicks(target.Ticks).TotalMinutes;
}

答案 5 :(得分:0)

回答“另一个”问题:您可以为DateTime创建扩展名

public static bool EqualsIgnoreSeconds(this DateTime a, DateTime b)
{
    // the ugly code
}

然后使用它很漂亮,例如:DateTime.Now.EqualsIgnoreSeconds(b)

答案 6 :(得分:0)

using System;

namespace Rextester
{
    public class Program
    {
        public static void Main(string[] args)
        {
          DateTime date1 = new DateTime(2009, 8, 1, 0, 0, 0);
          DateTime date2 = new DateTime(2009, 8, 1, 12, 0, 0);
          int result = DateTime.Compare(date1.Date, date2.Date);
          string relationship;

          if (result < 0)
             relationship = "is earlier than";
          else if (result == 0)
             relationship = "is the same time as";         
          else
             relationship = "is later than";

          Console.WriteLine("{0} {1} {2}", date1, relationship, date2);
        }
    }
}

这条线至关重要:

int result = DateTime.Compare(date1.Date, date2.Date);