红宝石,获得时区GMT之间的差异



我将使用 TZInfo gem 在 Ruby 中得到 GMT(例如:+09:00)之间的差异。我正在阅读文档,但找不到解决方案。我试过了:

tz = TZInfo::Timezone.get('Asia/Shanghai')
puts tz.strftime('%:z')

但它返回 +00:00,这是不正确的,为什么?看起来它仍然使用伦敦时间。

这应该可以做到,但正如有人指出的那样,你不能只使用该位置,你需要检查夏令时等。

tz = TZInfo::Timezone.get('Asia/Shanghai')
puts sprintf("%02d:%02d", *tz.current_period.offset.utc_offset.divmod(3600))

时区本身没有时差的概念,因为时差可能会在一年中的时间段内发生变化(某些时区有夏令时)。您需要分配特定的日期时间才能获得有意义的时差。

最新更新