我有一个部署为remoteapp的Windows应用程序。我正在尝试使用C#DateTime.Now生成时间戳。我很想知道,如果用户从一个与托管应用程序的服务器时区不同的地方使用该应用程序,将如何生成时间戳。它是特定于服务器还是特定于用户机器。如果是根据服务器时区,是否有任何方法可以使用户机器特定?
答案 0 :(得分:5)
我正在尝试使用C#DateTime.Now生成时间戳。
强烈建议不要这样做。这将使用运行代码的系统的时区。它不适合时间戳。特别是:
相反,对所有时间戳使用UTC - 所以DateTime.UtcNow
- 并确保使用这些时间戳的所有地方都知道它们是UTC。
即使使用UTC,如果您使用的是DateTime.UtcNow
,时间戳也将基于系统时钟,因此如果它们是在多台计算机上生成的,这些计算机可能具有彼此不同步的系统时钟,你的时间戳不会给出明确的排序......但是你会比使用系统本地时区更好的位置。
答案 1 :(得分:0)
我建议两件事:
在托管RemoteApp的Windows Server上启用time zone redirection policy。这将允许RemoteApp使用客户端的本地时区。
更新您的代码以使用DateTimeOffset.Now
而不是DateTime.Now
。这将保留您与UTC的偏移量,以便您可以稍后比较时间戳,同时仍然使用本地值进行显示。
答案 2 :(得分:0)