DateTime.现在返回奇怪的日期

本文关键字:日期 返回 DateTime | 更新日期: 2023-09-27 17:57:55

我有一个用C#.NET 3.5编写的WinForms应用程序。此应用程序与SQL Server 2008交互。每当我将一条记录添加到数据库中时,我都会将DateTime.Now插入到一个DateAdd列中。不管出于什么原因,我有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完全配备了磁通电容器。。。

DateTime.现在返回奇怪的日期

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

你的一台用户电脑的主板电池没电了——在别人桌子下面的一台(现在)黄色康柏桌面上找"Windows 98 Compatible"标签。在将记录写入数据库前2天,该计算机已通电。下一次它完全关闭或电源循环时,它将回到1980年1月1日。

最佳做法是让数据库指定日期(将列默认设置为GETDATE())。通过这种方式,可以使用单一日期方案,您不必担心用户更改日期、不同用户的事件因为他们的计算机间隔几分钟而以错误的顺序出现,或者因为时区设置不正确而导致时间间隔几个小时。