计算特定时区内特定时间的秒数

时间:2014-07-23 23:50:05

标签: ruby time

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

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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