【问题标题】:Noda Time zone Format野田时区格式
【发布时间】:2014-07-09 06:31:54
【问题描述】:

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

【问题讨论】:

    标签: c# nodatime datetime-conversion


    【解决方案1】:

    好吧,您给出的代码行的结果是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);
    

    【讨论】:

    • 好吧,我是如何结束这个 var properTimeZone = new ZonedDateTime(timeZone.AtLeniently(localDateTime).ToInstant(), timeZone).ToString("'('UTCo')' z “, 空值);它以这种格式(UTC+04:30)给我结果亚洲/喀布尔
    • 有没有办法通过使用我上面提到的格式来动态找出UTC或GMT
    • 请看我的编辑问题,现在你会明白我真正想要什么使用 NODA 时间。
    • @HaseebKhan:“找出 UTC 或 GMT”是什么意思?我已经向您展示了如何获取当前的标准偏移或墙偏移...
    • @HaseebKhan - 仅供参考 - 出于所有实际目的,GMT 和 UTC 为 essentially the same thing
    猜你喜欢
    • 1970-01-01
    • 2014-10-22
    • 2014-09-20
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多