我需要检查现在的时间是否在时间范围之间。
但我无法比较时间,因为时区突然消失了。
now = Time.now.in_time_zone('Berlin')
=> Wed, 11 Jan 2017 14:58:34 CET +01:00
time_from = send("#{day}_available_from".to_sym).in_time_zone('Berlin')
=> Sat, 01 Jan 2000 08:00:00 CET +01:00
time_till = send("#{day}_available_till".to_sym).in_time_zone('Berlin')
=> Sat, 01 Jan 2000 14:50:00 CET +01:00
date_from = DateTime.parse("#{Time.now.in_time_zone('Berlin').strftime('%d.%m.%Y')} #{time_from.strftime('%H:%M')}")
=> Wed, 11 Jan 2017 08:00:00 +0000
date_till = DateTime.parse("#{Time.now.in_time_zone('Berlin').strftime('%d.%m.%Y')} #{time_till.strftime('%H:%M')}")
=> Wed, 11 Jan 2017 14:50:00 +0000
now.between?(date_from, date_till)
=> true
但这是错误的。 14:58:34 不在 08:00:00 -> 14:50:00 之间
时区消失,
因为您没有将其提供给DateTime.parse
。
将time_from.strftime('%H:%M')
更新为 time_from.strftime('%H:%M %z')
。