1

我有一个时区名称,例如“America/New_York”以及该时区中特定时间的年、月、日、小时、分钟和秒。如何在该时区获得该时间的时区感知 DateTime 对象。类似于 Local 对象,但使用指定的时区而不是本地时区。

std::env::set_var("TZ", "America/New_York");
let x = Local.ymd(2019, 12, 1).and_hms(2, 0, 0);

这给出了我想要的结果,但我不想设置 TZ 环境变量,因为我希望 Local 保持本地时间,并且我需要能够针对不同情况更改 TZ,而 chrono 只读取 TZ 环境变量一次,据我所知。

我想要的是类似的东西

让 x = ???.tz("America/New_York").ymd(2019, 12, 1).and_hms(2, 0, 0);

这将返回一个时区感知 DateTime,它将在给定时区的情况下正确处理诸如添加和减去持续时间之类的操作。因此,FixeOffest 不起作用,因为添加一个跨越夏令时转换的持续时间,例如,不会(根据我的经验)产生具有正确偏移量的结果 - 即使那样它也保持在原始固定偏移量' t 在新日期申请。

有这样的事吗?我可以在不设置 TZ 环境变量的情况下创建具有指定 TZ 的 Local 对象吗?

4

0 回答 0