【问题标题】:How do I calculate the next occurrence of a time 04:00 am EST?如何计算美国东部标准时间上午 04:00 时间的下一次出现?
【发布时间】:2013-11-19 09:14:00
【问题描述】:

什么是获得下一个美国东部标准时间上午 04:00 的有效方法?

例如,如果日期和时间是 2013 年 11 月 19 日 01:30:00,那么下次出现的时间是 2013/11/19 04:00:00,但是如果是 2013/11/19 17:00 :00 那么下一次出现将是 2013/11/20 04:00:00

【问题讨论】:

  • 你不关心时区吗?
  • @AmolPujari 我忘了提到时区谢谢提醒。我想要时区:- EST。
  • 希望不是跨时区
  • 是的,它不跨越时区。 @AmolPujari

标签: ruby-on-rails ruby ruby-on-rails-3 datetime


【解决方案1】:

尝试关注

time = if Time.now.hour >= 4 
          Time.now+1.day 
       else
          Time.now
       end

time.strftime("%Y-%m-%d 04:00:00").to_datetime

或者只是

(Time.now+(Time.now.hour >= 4 ? 1 : 0).day).strftime("%Y-%m-%d 04:00:00").to_datetime

【讨论】:

    【解决方案2】:

    您可以使用以下方式获取所需的时间:

    time = DateTime.now
    time.change({hour: 4, min: 0, sec: 0})
    

    这将在凌晨 04:00 为您提供 time 变量。然后,您可以通过 time+1time-1 一次向前或向后移动一天。

    例如。 (保存一个位置)

    time = DateTime.now.change({hour: 4, min: 0, sec: 0})
    time += 1 if time < DateTime.now
    

    【讨论】:

      【解决方案3】:

      尝试关注

      time = Time.now.hour >= 4 ? Time.now+1.day : Time.now
      time.strftime("%Y-%m-%d 04:00:00").to_datetime
      

      【讨论】:

        【解决方案4】:

        有点老套:

        if (DateTime.now.to_i - Date.today.to_datetime.to_i) > (60 * 60 * 4)
          next_4am = (Date.today + 1.day).to_datetime + 4.hours
        else
          next_4am = Date.today.to_datetime + 4.hours
        end
        

        【讨论】:

          【解决方案5】:

          我会这样做:

          date, time = Time.now, [4,0,0]
          date += 24*60*60 if date.hour >= 4
          p Time.new(*date.to_a[3..5].reverse, *time) #=> 2013-11-20 04:00:00 +0100 
          
          # date.to_a[3..5].reverse gets the date our from the Time object
          

          【讨论】:

            猜你喜欢
            • 2012-07-12
            • 1970-01-01
            • 1970-01-01
            • 2021-06-21
            • 2020-05-16
            • 2022-06-29
            • 1970-01-01
            • 2011-12-14
            • 2015-09-24
            相关资源
            最近更新 更多