Ruby:tzinfo:其他司法管辖区的本地时间,包括时区偏移&夏令时政策

时间:2012-03-27 05:06:10

标签: ruby dst tzinfo

从我的last question,我现在知道如何访问tzinfo gem。但是我不知道如何将它用于我的目的。

假设我需要每天早上8:00向布隆迪布琼布拉的一个人发送一封电子邮件,其中包括每天适用于布琼布拉的时区和夏令时。我的理解是tzinfo“知道”这些信息。是否有可能在一年中的每一天将8:00 AM Bujumbura时间(包括夏令时)转换为UTC?我想做点什么:

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

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

1 个答案:

答案 0 :(得分: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 documentation解释了您的选择。)