gpt4 book ai didi

ruby-on-rails - 给定一个 DateTime,如何获取特定时区中具有相同日期的时间范围?

转载 作者:数据小太阳 更新时间:2023-10-29 07:37:05 26 4
gpt4 key购买 nike

我有一个表示特定日期的 DateTime 对象,如“2011-01-15 00:00:00 UTC”表示 1 月 15 日。我想生成具有相同日期的特定时区的时间范围

方法签名可能是这样的

def day_range_for(date, tz)
# ...
end

例如,如果我有 range_for(DateTime.parse('2011-01-15'), 'CST'),那么我希望结果是像 2011 这样的范围-01-15 00:00:00 -0600 .. 2011-01-15 23:59:59 -0600.

最佳答案

你能用输入字符串代替对象吗?如果您传入一个 DateTime 对象,它有点违反直觉,因为该对象表示的时间并不是您要查找的实际时间。如果您传入正确的绝对 DateTime 或字符串本身,它将符合我的期望。问题的实质完全由 ActiveSupport 处理,我认为您正在使用它,因为您使用 Rails 标记了这个问题。这看起来怎么样?

def range_for(input, tz=nil)
if tz.is_a?(String)
tz = ActiveSupport::TimeZone.new(tz)
else
tz = Time.zone
end
if input.acts_like?(:date) || input.acts_like?(:time)
d = input.in_time_zone(tz)
else
d = tz.parse(input)
end
return d.beginning_of_day..d.end_of_day
end

看看:

ruby-1.9.2-p0 > range_for('2011-01-15', 'Alaska')
=> Sat, 15 Jan 2011 00:00:00 AKST -09:00..Sat, 15 Jan 2011 23:59:59 AKST -09:00
ruby-1.9.2-p0 > range_for(Time.zone.now)
=> Mon, 10 Jan 2011 00:00:00 EST -05:00..Mon, 10 Jan 2011 23:59:59 EST -05:00
ruby-1.9.2-p0 > range_for('2011-01-15', 'EST')
=> Sat, 15 Jan 2011 00:00:00 EST -05:00..Sat, 15 Jan 2011 23:59:59 EST -05:00

关于ruby-on-rails - 给定一个 DateTime,如何获取特定时区中具有相同日期的时间范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4649741/

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