【发布时间】:2021-02-02 15:04:26
【问题描述】:
我正在使用代码将DateTime转换为long,反之亦然。
我发现了一个有趣的观察结果。以下是我的代码:
DateTime dt = new DateTime(123456);
int isEqual = DateTime.Compare(dt.ToLocalTime(), DateTime.MinValue.ToLocalTime());
if (isEqual == 0)
{
Console.WriteLine("Date is Equal");
}
我调试并检查了两个值,
dt is {1/1/0001 12:00:00 AM}
和
DateTime.MinValue is also {1/1/0001 12:00:00 AM}
我想知道为什么isEqual 的值是1 而不是0。
当比较两个值时using string.Equals() 方法;它返回了false。
需要一个理由。
【问题讨论】:
-
你有什么困惑?如果
Compare返回1,则表示第一个参数大于第二个。如果两个参数相等,Compare返回0。new DateTime(123456)确实大于DateTime.MinValue -
不要将 dt 用于 DataTime。大多数人将 dt 用于 DataTable。
-
会记住的。
-
试试
dt.ToString("MM/dd/yyyy HH:mm:ss.fffffff"),注意它比DateTime.MinValue晚0.0123456秒