使用NodaTime从时区(字符串)获取偏移分钟

时间:2016-10-12 19:14:51

标签: c# .net nodatime

如果我只有一个表示时区的字符串,那么获取分钟的最简单方法是什么? (例如“欧洲/伦敦”)

到目前为止,我有:

CLOSE_MODAL

但我找不到一种简单的方法将其转换为分钟。

注意:我需要的是在执行代码的特定时刻的偏移量。在该时区和UTC之间。

2 个答案:

答案 0 :(得分:18)

您需要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 / NodaConstants.MillisecondsPerMinute;
}

可以不使用IClock参数,而是在方法中使用SystemClock.Instance,但这会导致代码难以测试。

答案 1 :(得分:-2)

在分钟上使用DatePart()函数。