David
David

Reputation: 2569

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();
var 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..

Upvotes: 4

Views: 4664

Answers (3)

vtortola
vtortola

Reputation: 35963

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: broken link

Upvotes: 2

davewasthere
davewasthere

Reputation: 3018

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.

Upvotes: 0

John Ptacek
John Ptacek

Reputation: 1886

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/

Upvotes: 6

Related Questions