var dt1 = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified);
var dt2 = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Local);
var dt3 = new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
成对比较的结果让我感到意外:
Console.WriteLine(dt1 == dt2); // true
Console.WriteLine(dt1 == dt3); // true
Console.WriteLine(dt2 == dt3); // true
答案 0 :(得分:3)
是的,当您比较DateTime
值时会忽略Kind
property。
来自referance source of ==
operator in DateTime
structure:
public static bool operator ==(DateTime d1, DateTime d2)
{
return d1.InternalTicks == d2.InternalTicks;
}
同样来自DateTime.Compare
documentation 1 :
要确定
t1
与t2
的关系,请使用Compare方法进行比较 t1和t2的Ticks
property 但忽略了他们的Kind属性。 在比较DateTime对象之前,确保对象表示 在同一时区的时间。
1:内部使用==
运算符