【问题标题】:Compute the number of seconds to a specific time in a specific Time Zone计算特定时区中特定时间的秒数
【发布时间】:2014-07-23 23:50:05
【问题描述】:

我想在我的所有用户时区的特定时间触发通知。我想计算服务器在触发通知之前应该等待的延迟。我可以使用 Time.now.in_time_zone(person.time_zone) 计算用户时区的时间

我可以从那个时间中去掉小时、分钟和秒,并找出到特定时间剩余的秒数。但是,我想知道是否有一种更优雅的方法,我可以在时区的今天和明天设置上午 9:00 并将其与 Time.now.in_time_zone(person.time_zone) 进行比较,然后使用算术找出秒数ruby 时间类中的操作。

或者简而言之,我的问题是:(是:在否决票之前!)

如何计算纽约下一个上午 9:00 的秒数?

【问题讨论】:

标签: ruby time


【解决方案1】:

这个呢

next9am = Time.now.in_time_zone(person.time_zone).seconds_until_end_of_day + 3600 * 9 
next9am -=  24 * 60 * 60 if Time.now.in_time_zone(person.time_zone).hour < 9

【讨论】:

  • 那是错误的。如果是当地时间上午 6:00 怎么办?
  • 不认为这是一个有效的比较:Time.now.in_time_zone(person.time_zone)
【解决方案2】:
NOTIFICATION_HOUR = 9
local_time = Time.now.in_time_zone(person.time_zone)
desired_time = local_time.hour >= NOTIFICATION_HOUR ? local_time + 1.day : local_time
desired_time = Time.new(desired_time.year, desired_time.month, desired_time.day, NOTIFICATION_HOUR, 0, 0, desired_time.utc_offset)
return desired_time - local_time

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    相关资源
    最近更新 更多