【发布时间】:2019-03-10 00:22:02
【问题描述】:
我已经成功创建了一个名为 dst_datechange 的 DST 方法,该方法需要一个日期,并使用 Time.parse 进行解析。它看起来像这样:
require 'time'
def dst_datechange(date)
date = Time.parse(date.to_s) # if date.class.eql?(String)
case
when (date > Time.parse('March 11, 2018 2:00am')) && (date <
Time.parse('November 4, 2018 2:00am'))
date = Time.parse('November 4, 2018 2:00am')
puts "the date rounded to november 4, 2018"
when (date > Time.parse('November 4 2018, 2:00am')) && (date <
Time.parse('March 10, 2:00am'))
date = Time.parse('March 10, 2019 2:00am')
puts "the date rounded to march 10 2019"
when (date > Time.parse('March 10, 2019 2:00am')) && (date <
Time.parse('November 3, 2019 2:00am'))
date = Time.parse('November 3, 2019 2:00am')
when (date > Time.parse('November 3, 2019 2:00am')) && (date <
Time.parse('March 8, 2020 2:00am'))
date = Time.parse('March 8, 2020 2:00am')
when (date > Time.parse('March 8, 2020 2:00am')) && (date <
Time.parse('November 1, 2020 2:00am'))
date = Time.parse ('November 1, 2020 2:00am')
else
raise "The date #{date} does not match any dst date parameter"
end
date
puts "the new DST date is #{date}"
end
我的“puts”显示了这个......
the date rounded to: november 4, 2018
the new DST date is now: 2018-11-04 02:00:00 -0600
现在我收到了正确的日期,我有一个步骤可以采用 dst_datechange 并执行减法,但是,我收到一条错误消息:
TypeError: no implicit conversion of Integer into Array
我不确定我做错了什么,但我知道这很可能是一个格式问题,我试图用一个时间对象减去一个日期时间对象。这是我下面的步骤,堆栈跟踪将失败指向:
date = (dst_datechange(Time.now) - (60*60*3))
puts "the date is now adjusted 3 hours back from 2:00am: #{date} "
end
我不确定如何格式化 (60*60*3) 以从新的 11 月 2018-11-04 02:00:00 -0600 日期减去 3 小时,然后基本上将其回滚到 2018-11-03 23:00:00 -0600
【问题讨论】:
-
如果您遇到包含您创建的方法的错误,则包含该方法可能有意义。我们甚至无法在没有看到它的情况下调试您的代码。
-
好的,刚刚添加了!
标签: ruby date datetime time dst