6

在我的 ASP.NET 应用程序中,我使用此处的代码来查找应用程序的构建日期为 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俄语)。

为什么时间不同?它们是否也根据某些取决于本地化的时区进行调整?

4

1 回答 1

3

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

您链接的代码使用GetCallingAssembly,您应该注意MSDN 说

如果调用 GetCallingAssembly 方法的方法由即时 (JIT) 编译器内联展开,或者如果其调用方内联展开,则 GetCallingAssembly 返回的程序集可能会意外不同

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

于 2012-09-28T09:03:57.610 回答