What's the easiest way to get the minutes if I only have a string that represents the timezone? (for example "Europe/London")
So far I have:
public static int ConvertFromTimeZoneToMinutesOffset(string timeZone)
{
DateTimeZone zone = DateTimeZoneProviders.Tzdb[timeZone];
// Need magic code to get offset as minutes
}
But I'm not finding an easy approach to convert it to minutes.
NOTE: What I need is the offset in that specific moment in which the code is being executed. Between that timezone and UTC.
You need DateTimeZone.GetUtcOffset(Instant)
:
public static int ConvertFromTimeZoneToMinutesOffset(string timeZone, IClock clock)
{
DateTimeZone zone = DateTimeZoneProviders.Tzdb[timeZone];
Offset offset = zone.GetUtcOffset(clock.Now);
return offset.Milliseconds / NodaConstant.MillisecondsPerMinute;
}
You could leave off the IClock
parameter and instead use SystemClock.Instance
in the method, but that leads to code which is harder to test.
See more on this question at Stackoverflow