1

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

4

1 回答 1

3

好吧,您给出的代码行的结果是DateTimeZone. 那aMinOffset和 a 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);
于 2014-07-09T07:31:53.870 回答