我正在使用调度程序模块,我想知道当前任何X时区是否在午夜。为此目的,有没有图书馆/宝石?如果没有,那么找出一个好的逻辑是什么?
答案 0 :(得分:3)
你的短语有点含糊不清("任何X时区"),所以我将解释另一种可能的解释:
如果您想检查"它是否在某个地方午夜",以及"午夜"广泛地理解为从00:00到00:59的任何时间,简单的单行是
ActiveSupport::TimeZone.all.any?{ |time| time.now.hour.zero? }
要检查它是否正好是00:00(或00:00:00,虽然我无法想象您为什么要这样做...),但要为布尔值添加适当的条件块:
ActiveSupport::TimeZone.all.any?{ |time| time.now.hour.zero? && time.now.min.zero? }
从Rails应用程序中调用ActiveSupport::
时,您可以放弃TimeZone.all
。
[source]
答案 1 :(得分:1)
你可以这样做:
> Time.zone
=> (GMT-05:00) Eastern Time (US & Canada)
> given_time_zone = "Central Time (US & Canada)"
> Time.zone.now.in_time_zone(given_time_zone)
=> Sun, 23 Mar 2014 23:55:57 CDT -05:00
然后你可以检查hour
是否zero
来检查它是否在午夜12点到凌晨1点之间:
> Time.zone.now.in_time_zone(given_time_zone).hour == 0
=> false