DateTime.Now返回奇怪的日期

时间:2011-05-30 15:38:27

标签: c# .net

我有一个用C#.NET 3.5编写的WinForms应用程序。此应用程序与SQL Server 2008交互。每当我向数据库添加记录时,我都会在DateAdd列中插入DateTime.Now。无论出于何种原因,我有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 ......

2 个答案:

答案 0 :(得分:6)

如果这是客户端Windows应用程序,请检查相关用户正在使用的计算机上的系统时间。此外,我不知道这是否是最佳实践,但我发现如果我在SQLSERVER中使用GetDate()而不是在C#.NET应用程序中传递日期,我需要记录当前的情况更容易维护时间。

答案 1 :(得分:3)

您的一台用户计算机上的主板电池已耗尽 - 在某人桌面下的(现在)黄色Compaq桌面前面找到“Windows 98 Compatible”标签。在将记录写入数据库之前2天,该计算机已启动。下次完全停机或重启时,它将回到1980年1月1日。

最佳做法是让数据库分配日期(将列默认设置为GETDATE())。这样就可以使用单一的日期方案,您不必担心用户更改日期,来自不同用户的事件以错误的顺序出现,因为他们的计算机彼此相隔几分钟,或者因为时间几小时而关闭不正确的时区设置。