【问题标题】:Ruby - Is there a way to get the timestamp for a specific future time but have that be dependent on timezoneRuby - 有没有办法获取特定未来时间的时间戳,但取决于时区
【发布时间】:2020-10-30 09:39:28
【问题描述】:

我有一个电子邮件系统。我想在当地时间上午 8 点向人们发送电子邮件。如果我的时区采用以下格式:“America/New_York”,我怎样才能获得具有该时区下一个 8AM 实例的 Time 对象?

【问题讨论】:

  • @spickermann 谢谢,但这对我的情况并没有帮助
  • 您想每天早上 8 点发送这些电子邮件,因此需要知道每个用户时区的早上 8 点是您服务器时区的什么时间?还是您只需要发送一次电子邮件,因此只需要知道您所在时区的下一次时间,即特定用户所在时区的上午 8 点?
  • @spickermann 后者。我们基本上将电子邮件安排在某个时间发送,但现在正在排队,但发送时间不同。我们想安排它,以便在当地时间上午 8 点为该用户发送电子邮件。

标签: ruby-on-rails ruby time timezone


【解决方案1】:

我假设您有一个User 模型,并且每个用户的时区都存储在属性timezonetimezone #=> 'America/New_York' 中。

然后你可以在你的 User 模型中添加如下方法:

def next_time_it_is_8am_in_this_users_timezone_in_utc
  time = ActiveSupport::TimeZone[timezone].now.change(hour: 8)
  time = time + 1.day if time.past?
  
  time.utc
end

【讨论】:

  • 谢谢!这比我最终得到的代码要清晰得多。
猜你喜欢
  • 2016-08-23
  • 1970-01-01
  • 2020-01-05
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 2012-03-23
  • 1970-01-01
  • 2012-04-09
相关资源
最近更新 更多