c# - 为什么相同的 DateTime 值会为不同的用户产生不同的显示时间?

标签 c# asp.net .net localization timezone

在我的 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.Tickstime.Kind 开始:如果它们相同,您就知道这是一个显示问题。如果它们不同,您需要查看如何生成时间值。

关于c# - 为什么相同的 DateTime 值会为不同的用户产生不同的显示时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12636724/

相关文章:

c# - (部分)C# HTTP 服务器无法识别 HTTP 请求

c# - 将 C# DateTime 转换为 C++ std::chrono::system_clock::time_point

c# - JavaScript 中的业务逻辑

javascript - 为什么这在 ASP.NET 中不起作用?

c# - 如何以编程方式创建 JOIN 语句?

.net - 在C#.net的OpenFileDialog中更改按钮文本

c# - 请帮忙修改这个正则表达式

c# - 使用 textBox_TextChanged 事件和 if 语句一起写入文本框越来越慢。

jquery - 当 POST/Submit 被触发时,Web 应用程序会自动更改 URL

asp.net - ContentPlaceHolderID 作为前缀添加到我的表单字段