【发布时间】:2013-07-16 03:39:05
【问题描述】:
我有 2 个DateTime 值:
date1
date2
比较这两个日期时,两个日期相等。
if (DateTime.Compare(date1, date2)!=0)
...
谁能解释一下原因?
对我来说有点奇怪:将 date1(未指定类型)转换为 UTC 时,我清楚地看到日期不同:
date1.ToUniversalTime() --> {15-07-13 18:45:10} 类型 = UTC
【问题讨论】:
-
作为一种变通方法,您可能想要编写一个自定义比较器,例如
public class FullDateTimeEqualityComparer : EqualityComparer<DateTime> { public override bool Equals(DateTime dt1, DateTime dt2) { return dt1.Kind == dt2.Kind && dt1 == dt2; } public override int GetHashCode(DateTime dt) { return dt.Kind.GetHashCode() ^ dt.GetHashCode(); } }。 -
关于转换的最后一点。未指定的转换很棘手...如果您要转换 ToLocalTime 它假定它是 UTC。而且,反之亦然,如果您要转换 ToUniversalTime 它假定它是本地的。因此,无论哪种方式都会发生转化。