0

从我的最后一个问题,我现在知道如何访问 tzinfo gem。但是我不知道如何将它用于我的目的。

假设我需要每天早上 8:00 以适用于布琼布拉的任何时区和夏令时组合向布隆迪布琼布拉的一个人发送电子邮件。我的理解是 tzinfo “知道”这些信息。是否可以将一年中的每一天的 8:00 AM 布琼布拉时间(包括夏令时)转换为 UTC?我想做类似的事情:

require 'tzinfo'
bz = TZInfo::Timezone.get('Africa/Bujumbura')
#bujumbura_time=????
bujumbura_utctime=tz.local_to_utc(bujumbura_time)

如何编码“bujumbura_time”以反映布琼布拉时间是上午 8:00?

4

1 回答 1

2

我认为您不需要bujumbura_time了解特定的时区。相反,您创建一个本地时间,然后可以将其与时区一起转换为 UTC :

require 'tzinfo'
bz = TZInfo::Timezone.get('Africa/Bujumbura')
bujumbura_time = Time.local(2012, 3 ,27, 8, 0, 0)
bujumbura_utctime = bz.local_to_utc(bujumbura_time)

请注意,由于夏令时,从本地时间转换为 UTC 可能会很尴尬 - 当时钟向前移动时,本地时间的一个小时(通常)会被完全跳过,而当时钟向后移动时,本地时间的一部分会出现两次。你应该弄清楚在这些情况下你想发生什么。(local_to_utc文档解释了您的选择。)

于 2012-03-27T05:18:33.127 回答