在我的 ASP.NET 应用程序中,我使用代码 from here以 UTC 格式查找应用程序的构建日期。从汇编文件中读取的 UTC 值的格式如下:
//DateTime time
return time.ToString("dd MMM yyyy HH:mm:ss");
现在一个用户打开该应用程序提供的页面并看到
28 сен 2012 04:13:56
并通知打开同一页面并看到的其他用户
27 Sep 2012 12:14:32
这两个请求都由同一个应用程序提供服务,该应用程序部署为从同一个包中清理 Windows Azure VM,因此这肯定是为两个用户运行的完全相同的代码。
很明显,由于来自不同用户的请求的本地化不同,字符串的格式也不同。一位用户将月份显示为 Sep
,而另一位用户将其视为 сен
(相当于俄语中的 Sep
)。
为什么时间不同?它们是否也根据取决于本地化的某个时区进行了调整?
最佳答案
最明显的解释是 DateTime
值实际上是不同的。
您链接的代码使用了 GetCallingAssembly
,您应该注意到 MSDN says那:
If the method that calls the GetCallingAssembly method is expanded inline by the just-in-time (JIT) compiler, or if its caller is expanded inline, the assembly that is returned by GetCallingAssembly may differ unexpectedly
要对此进行调试,我将从显示 time.Ticks
和 time.Kind
开始:如果它们相同,您就知道这是一个显示问题。如果它们不同,您需要查看如何生成时间值。
关于c# - 为什么相同的 DateTime 值会为不同的用户产生不同的显示时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12636724/