DateTime.Now返回的奇怪日期

问题描述

| 我有一个用C#.NET 3.5编写的WinForms应用程序。此应用程序与sql Server 2008进行交互。每当我向数据库添加记录时,我都会在其中插入一个“ 0”列,并向其中插入“ 1”。无论出于何种原因,我有4条记录的日期是奇数的:
\'1980-01-03 23:08:43.970\'    
\'1980-01-03 23:08:44.157\'    
\'1980-01-03 23:08:44.530\'    
\'1980-01-03 23:08:45.547\'
这些之前和之后的记录都有正确的日期
\'2011-05-29 XX:XX:XX.XXX\'
用户无权修改任何应用程序中的日期字段。 有什么理由会这样改变日期?用户无权修改其系统时间,我假设这是DateTime.Now从中收集日期的地方。 基本上,我得出的结论是,要么存在错误,要么用户拥有完全配备有通量电容器的Delorean ...     

解决方法

        如果这是客户端Windows应用程序,请在有问题的用户正在使用的计算机上检查系统时间。另外,我不知道这是否是最佳做法,但是如果我需要记录以下内容,我发现如果在SQLSERVER中使用GetDate()而不是从C#.NET应用程序传递日期,则维护起来会更容易。当前时间。     ,        您的一台用户计算机上的主板电池没电了-在某人的桌子下面的(现在)黄色Compaq台式机的前面寻找“ Windows 98兼容”标签。在将记录写入数据库之前,该计算机已开机2天。下次完全关闭或重新打开电源时,它可以回到1980年1月1日。 最佳实践是让数据库分配日期(将列默认设置为GETDATE())。通过这种方式使用单一日期方案,您不必担心用户更改日期,来自不同用户的事件以错误的顺序出现,因为他们的计算机彼此相距几分钟,或者有时相隔几个小时,因为时区设置错误。