我正在使用C#和SQL
开发一个Windows应用程序,我想在db中存储一些特定事件的时间,我尝试使用C# Datetime
类,但当我更改我的windows本地时间它没有给我真实的约会,然后我想也许SQL
拥有它自己的约会系统,我搜索但没有出现,那么拥有安全时间系统的最佳方式是什么?哪些用户无法轻易操纵存储在数据库中的时间?
答案 0 :(得分:2)
通常用户无法在没有管理员权限的情况下更改系统时间。如果您的代码在用户是admin的不受信任的计算机上运行,那么您需要另一个时间源。 (不可否认,您的整个计划可能会受到影响,但这是另一个主题)。
您可以在MSSQL中查询当前时间described here
SELECT CURRENT_TIMESTAMP
GO
SELECT {fn NOW()}
GO
SELECT GETDATE()
GO
另一种方法是在互联网上的其他地方查询NTP服务器。这需要网络编程。有这个SO question about it here
答案 1 :(得分:0)
如果您不信任您的工作站或服务器时间,您可以从NTP服务器获取时间,如果不可用,则仍然会回退到本地时钟。可以在https://stackoverflow.com/a/12150289/2360972
找到如何从NTP服务器获取当前时间的简短示例答案 2 :(得分:0)
对于这个答案,我实际上已经很晚了。 我也做了很多搜索这个答案&最后我得到了最好的解决方案。
UTC是将数据时间存储在应用程序中的标准格式。
What is UTC?
UTC或协调世界时,是所有时区表示为偏移量的标准国际时间。 UTC不会针对夏令时进行调整。要从UTC计算本地时间,只需添加时区偏移量,然后在夏令时生效时再添加一小时。
请参阅此链接您的所有疑问将在参考后明确: Click To refer
UTC
时间总是需要服务器日期时间&不会占用您的系统日期时间。
此外,如果您的应用程序在不同的国家/地区运行,则只有一种方法可以消除时间之间的冲突。使用UTC
这是时间相关问题的非常好的示例: Click Here