如何在C#中使用不使用本地系统时间的安全时间

时间:2014-11-02 07:23:13

标签: c# sql .net time

我正在使用C#和SQL开发一个Windows应用程序,我想在db中存储一些特定事件的时间,我尝试使用C# Datetime类,但当我更改我的windows本地时间它没有给我真实的约会,然后我想也许SQL拥有它自己的约会系统,我搜索但没有出现,那么拥有安全时间系统的最佳方式是什么?哪些用户无法轻易操纵存储在数据库中的时间?

3 个答案:

答案 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