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