开发者

Convert utc to local datetime

i've got an globalization setting in the web.config like this:

<globalization culture="de-DE" uiCulture="de-DE" />

and on an average aspx page i output sth. like:

var a = DateTime.UtcNow.ToLocalTime().ToString();
va开发者_JS百科r b = DateTime.UtcNow.ToString();
var c = DateTime.Now.ToLocalTime().ToString();
var d = TimeZone.CurrentTimeZone.ToLocalTime(DateTime.UtcNow).ToString();

Result: The values of a,b,c,d are ALL identical ( e.g. 01.01.2001 17:00:00 ), when i would expect the local and UTC times to be different.

What am i missing here and how can i get the correct localtime from a UTC date.. i checked other topics already, but it didn't work..


Microsoft Azure is set to have UTC time be the local time no matter where the data center is located. If you want to convert to a time that is local to a user's browser you will need to convert it programatically.

Since Azure is a global service, there really is no local time per se, and to be consistent across all their global data centers, it makes sense to use a standard time.

More information at.

http://michaelcollier.wordpress.com/2010/05/22/hey-azure-what-time-is-it/


As @John has pointed out you have to do it in the client. If it's a web application you can convert UTC to local time in this way: http://blogs.msdn.com/b/marcelolr/archive/2008/06/04/javascript-date-utc-and-local-times.aspx


This is what I've found works for me:

   TimeZoneInfo de = TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time");
   var localTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, de);

And even though it's W. Europe Standard Time, it still takes into account Summer Time. (I have it working with GMT/BST quite nicely)

I had hoped that ToLocalTime would take into account the CultureUI/Culture globalization settings when converting, but that doesn't seem to be the case.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜