找出当前任何时区是否在午夜

时间:2014-03-24 04:49:35

标签: ruby-on-rails ruby

我正在使用调度程序模块,我想知道当前任何X时区是否在午夜。为此目的,有没有图书馆/宝石?如果没有,那么找出一个好的逻辑是什么?

2 个答案:

答案 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