我正在制作一个高度依赖服务器时间的Booking Web App。
我想确保使用System.DateTime.Now
进入我的应用的时间是实时的。
服务器时间或UTC时区是否可能以不想要的方式发生变化?
答案 0 :(得分:2)
您可以从字面上将服务器时间设置为GMT / UTC。当然,这不会阻止其他人稍后对其进行更改,并在不知情的情况下使您的应用无聊。
通常,您永远不要使用DateTime.Now
。老实说,如果时间对您来说很重要,那么您甚至都不应该使用DateTime
。 DateTimeOffset
在几乎所有情况下都更合适,特别是您应该使用DateTimeOffset.UtcNow
。不过,DateTimeOffset.Now
的问题至少比DateTime.Now
少,因为至少服务器的偏移量将在计算中发挥作用。
如果您需要精确的时间处理,则应使用Jon Skeet维护的Noda Time库,特别是因为.NET CLR日期/时间处理都不是100%准确的
答案 1 :(得分:1)
服务器时间或UTC时区是否有可能在 不需要的方式?
是的,有可能。一种解决方案是通过从NTP服务器获取准确时间来定期检查服务器时间。
示例: How to Query an NTP Server using C#?
您可以在应用程序中列出NTP服务器池,以实现一点冗余。