Get offset minutes from timezone (string) with NodaTime

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.

Jon Skeet
people
quotationmark

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.

people

See more on this question at Stackoverflow