野田时区格式

时间:2014-07-09 06:31:54

标签: c# nodatime datetime-conversion

我正在使用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实现这一目标?

1 个答案:

答案 0 :(得分:3)

嗯,您提供的代码行的结果是DateTimeZone MinOffsetMaxOffset,但那是另一回事。

您可以使用以下方法找到当前的标准和墙壁偏移:

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);