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

时间:2012-09-28 08:55:33

标签: 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)。

为什么小时数不同?它们是否也根据某些依赖于本地化的时区进行了调整?

1 个答案:

答案 0 :(得分:3)

最明显的解释是DateTime值实际上是不同的。

您关联的代码使用GetCallingAssembly,您应该注意MSDN says

  

如果调用GetCallingAssembly方法的方法由实时(JIT)编译器内联展开,或者其调用者是内联展开的,则GetCallingAssembly返回的程序集可能会意外地出现差异

要调试这个,我首先要显示time.Tickstime.Kind:如果这些是相同的,你知道这是一个显示问题。如果它们不同,您需要了解如何生成时间值。