Get Datetime Offset for Timezone Get Datetime Offset for Timezone azure azure

Get Datetime Offset for Timezone


You can do something like this

TimeZoneInfo cet = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");DateTimeOffset offset = TimeZoneInfo.ConvertTime(DateTime.Now, cet);

As described here.

If you're not sure about a TimeZoneId you can use GetSystemTimeZones() to find it.

An alternative, as described here, would be to do something like this

DateTime nowCet = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(DateTime.Now,     "Central European Standard Time");

The nice thing about this is you can easily calculate the difference between two time zones like, for example

DateTime newYork = new DateTime(2017, 10, 04, 12, 23, 00);DateTime berlin = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(newYork,     "Eastern Standard Time", "Central European Standard Time");TimeSpan diff = berlin - newYork;


You can use TimeZoneInfo:

TimeZoneInfo cetInfo = TimeZoneInfo.FindSystemTimeZoneById("Central Europe Standard Time");DateTimeOffset cetTime = TimeZoneInfo.ConvertTime(DateTimeOffset.Now, cetInfo);


With correct daylight saving offsets (example in CET):

        DateTime utcDT = DateTime.UtcNow;        DateTime cetDT = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcDT, "UTC", "Central European Standard Time");        DateTimeOffset utcDTO = new DateTimeOffset(utcDT);        DateTimeOffset cetDTO = new DateTimeOffset(cetDT, cetDT - utcDT);        // Result (with daylight saving)        //        // 2021. 06. 24. 7:42:09        // 2021. 06. 24. 9:42:09        // 2021. 06. 24. 7:42:09 +00:00        // 2021. 06. 24. 9:42:09 +02:00