DateTime.Compare无法按预期工作

qas*_*ali 1 .net c# datetime

我试图比较两个DateTime对象忽略秒与下面的函数,但它给出了错误的结果,即使两个DateTime对象具有相同的值.无法弄清楚如何使其正常工作,任何帮助将受到高度赞赏.

public static int CompareDateTime(DateTime d1, DateTime d2)
{
    d1 = d1.AddSeconds(-1 * d1.Second);
    d2 = d2.AddSeconds(-1 * d2.Second);

    int result = DateTime.Compare(d1, d2);
    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}", d1, relationship, d2);

    return result;

}
Run Code Online (Sandbox Code Playgroud)

结果:

3/7/2017 2:54:00 PM is later than 3/7/2017 2:54:00 PM
Run Code Online (Sandbox Code Playgroud)

Chr*_*ris 7

这里的问题是你没有像你期望的那样截断.截断的最佳方法是通过执行以下操作从构造函数创建一个全新的DateTime对象:

d1 = new DateTime(d1.Year, d1.Month, d1.Day, d1.Hour, d1.Minute, 0);
d2 = new DateTime(d2.Year, d2.Month, d2.Day, d2.Hour, d2.Minute, 0);
Run Code Online (Sandbox Code Playgroud)

这将确保您只比较所需的数据.

在这种特定情况下,它可能是您尝试截断所留下的日期时间的一部分.