我正在使用Noda Time库。我的代码是
var timeZone = NodaTime.DateTimeZoneProviders.Tzdb.GetZoneOrNull("Europe/Amsterdam");
上面的代码行给了我这样的价值,我不想要。
MaxOffset: +2:00
MinOffset: +00:19:32
当我使用相同的区域并使用timezonedb.com进行查询时,它会给我这样的结果
UTC/GMT +2.00 hours
但我需要这种格式的结果:
(UTC+02:00) Europe/Amsterdam
如何使用Noda Time实现这一目标?
答案 0 :(得分:3)
嗯,您提供的代码行的结果是DateTimeZone
。 有MinOffset
和MaxOffset
,但那是另一回事。
您可以使用以下方法找到当前的标准和墙壁偏移:
IClock clock = // some clock, e.g. SystemClock.Instance;
Instant now = clock.Now;
ZoneInterval interval = zone.GetZoneInterval(now);
Offset wallOffset = interval.WallOffset;
Offset standardOffset = interval.StandardOffset;
因此,根据您是希望UTC+08:00
表示当前标准还是墙面偏移,您可以格式化。例如:
string text = string.Format("(UTC{0:+m}) {1}", interval.WallOffset, zone.Id);