gpt4 book ai didi

timezone-offset - 确定如何在 ZoneDateTime 上使用 nodaTime 和 withZone 计算不同时区的时间

转载 作者:行者123 更新时间:2023-12-04 04:57:35 26 4
gpt4 key购买 nike

在时区之间转换时间时。我发现以下代码有效。但是,我不确定如何以编程方式将什么作为 ZonedDateTime 的构造函数的偏移量。 .我可以选择 zoneChicago 上的一个偏移量,它只有两个,因为它要么没有夏令时,但我怎么知道我使用哪个,以及对于只有两个以上的时区,什么是最好的填充该偏移量的方法?

谢谢,

吉姆

var zoneLA      = c.GetZoneOrNull("America/Los_Angeles");
var zoneChicago = c.GetZoneOrNull("America/Chicago");

var zdtChicago = new ZonedDateTime( LocalDateTime.FromDateTime(DateTime.Now)
, zoneChicago
, zoneChicago.MaxOffset);

var zdtLA = zdtChicago.WithZone(zoneLA);

最佳答案

如果您对当前时间感兴趣,您可以使这更简单——而且确实更易于测试。使您的代码采用 IClock 作为“提供当前即时时间的服务”。具体实现使用 SystemClock.Instance 正在生产中,但 FakeClock用于测试。
IClock有一个成员: Now .返回当前 Instant 时间,这与时区甚至日历系统无关。

Instant和一个时区,你可以很容易地得到一个 ZonedDateTime :

Instant now = clock.Now;
var zone = DateTimeZoneProviders.Tzdb["America/Los_Angeles"];
ZonedDateTime = now.InZone(zone);

它将计算出本地日期/时间和偏移量是什么。你不需要做任何聪明的事情:)

关于timezone-offset - 确定如何在 ZoneDateTime 上使用 nodaTime 和 withZone 计算不同时区的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16575438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com