如何在C#中使用不使用本地系统时间的安全时间
本文关键字:系统 时间 全时间 安全 | 更新日期: 2023-09-27 18:28:56
我正在使用C#和SQL
开发一个windows应用程序,我想在数据库中存储一些特定事件的时间,我尝试使用C# Datetime
类,但当我更改windows本地时间时,它没有给我真实的日期,然后我想SQL
可能有自己的日期系统,我搜索了一下,但没有找到任何结果,那么拥有安全时间系统的最佳方法是什么?用户不能容易地操纵存储在数据库中的时间?
通常用户在没有管理员权限的情况下无法更改系统时间。如果你的代码运行在一台不受信任的机器上,而用户是admin,那么你需要另一个时间来源。(诚然,你的整个程序可能会受到影响,但这是另一个话题)。
如所述,您可以查询MSSQL的当前时间
SELECT CURRENT_TIMESTAMP
GO
SELECT {fn NOW()}
GO
SELECT GETDATE()
GO
另一种方法是在互联网上的其他地方查询NTP服务器。这需要网络编程。这里有一个关于它的SO问题
如果您不信任您的工作站或服务器时间,您可以从NTP服务器获取时间,如果时间不可用,则仍会回退到本地时钟。以下是如何从NTP服务器获取当前时间的简短示例https://stackoverflow.com/a/12150289/2360972
实际上我得到这个答案已经很晚了。我也做了很多搜索这个答案&最后我找到了最好的解决方案。
UTC是在应用程序中存储数据时间的标准格式。
What is UTC?
UTC,或协调世界时,是所有时区都以偏移量表示的标准国际时间。UTC不会根据夏令时进行调整。要从UTC计算本地时间,只需添加时区偏移,然后在夏令时生效的情况下再添加一个小时。
请参阅此链接您的所有疑虑都会在参阅后得到澄清:点击参考
CCD_ 4时间将总是占用服务器日期时间&不会占用您的系统日期时间。此外,如果您的应用程序在不同的国家/地区运行,那么只有一种方法可以消除时间之间的冲突,那就是使用UTC
这是一个很好的时间相关问题示例:单击此处