我在web.config中有一个全球化设置,如下所示:
<globalization culture="de-DE" uiCulture="de-DE" />
并且在平均的aspx页面上我输出了......像:
var a = DateTime.UtcNow.ToLocalTime().ToString();
var b = DateTime.UtcNow.ToString();
var c = DateTime.Now.ToLocalTime().ToString();
var d = TimeZone.CurrentTimeZone.ToLocalTime(DateTime.UtcNow).ToString();
结果:a,b,c,d的值完全相同(例如01.01.2001 17:00:00),当我希望本地和UTC时间不同时。
我在这里缺少什么以及如何从UTC日期获得正确的本地时间..我已经检查了其他主题,但它没有用..
答案 0 :(得分:6)
无论数据中心位于何处,Microsoft Azure都设置为将UTC时间作为本地时间。如果要转换为用户浏览器本地的时间,则需要以编程方式进行转换。
由于Azure是一项全球服务,本身确实没有本地时间,并且要在所有全球数据中心保持一致,因此使用标准时间是有意义的。
更多信息,请访问。
http://michaelcollier.wordpress.com/2010/05/22/hey-azure-what-time-is-it/
答案 1 :(得分:2)
@John指出你必须在客户端做到这一点。如果它是一个Web应用程序,您可以通过以下方式将UTC转换为本地时间:http://blogs.msdn.com/b/marcelolr/archive/2008/06/04/javascript-date-utc-and-local-times.aspx
答案 2 :(得分:0)
这是我发现对我有用的东西:
TimeZoneInfo de = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
var localTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, de);
即使是W. Europe标准时间,它仍会考虑夏令时。 (我与GMT / BST配合得很好)
我曾希望ToLocalTime在转换时会考虑CultureUI / Culture全球化设置,但这似乎并非如此。