gpt4 book ai didi

ruby-on-rails - 如何将时间移动(而不是转换)到新时区?

转载 作者:太空宇宙 更新时间:2023-11-03 16:38:01 26 4
gpt4 key购买 nike

我有一个日期时间 d和一个字符串 tz这是有效的 ActiveSupport::TimeZone key (例如“UTC”、“东部时间(美国和加拿大)”、“美国/芝加哥”等)。我如何获得一个新的 DateTime d2 以便一切都相同,但偏移量为 d2现在反射(reflect)对应于 tz 的时区?

请注意,我不想将时间转换到新时区。我想要一个新的 DateTime,其他一切都相同,但偏移量不同。

例如,如果我有 d = <today @ 5:00 PM UTC> , 和 tz = 'Central Time (US & Canada)' ,我要的是d2 = <today @ 5:00 PM -0600> , 不是 d2 = <today @ 11:00 AM -0600> .

最佳答案

给定 tz,您可以将其转换为一天的小数部分的偏移量:

offset = ActiveSupport::TimeZone.new(tz).utc_offset / 60 / 60 / 24.0
=> -0.25 # for 'Central Time (US & Canada)'

然后您可以将其与 d 中的现有详细信息一起传递到 DateTime.civil 以创建新对象:

d2 = DateTime.civil(d.year, d.month, d.day, d.hour, d.min, d.sec, offset)

关于ruby-on-rails - 如何将时间移动(而不是转换)到新时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4656740/

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