在比较时间时是否简单地忽略了日期时间种类
本文关键字:时间 日期 种类 简单 比较 是否 | 更新日期: 2023-09-27 18:30:40
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
是的
,当您比较DateTime
值时Kind
属性将被忽略。
从DateTime
结构中==
运算符的参考源:
public static bool operator ==(DateTime d1, DateTime d2)
{
return d1.InternalTicks == d2.InternalTicks;
}
同样来自DateTime.Compare
文档1:
为了确定
t1
与t2
的关系,比较方法比较 t1 和 t2 的Ticks
属性,但忽略它们的 Kind 属性。 在比较 DateTime 对象之前,请确保对象表示 同一时区的时间。
1:内部使用==
运算符