使用Ruby的时区混淆';s时间班
值得注意的是,我使用的是Ruby 2.1.2,因此Time类使用带符号的63位整数。当整数可以表示自纪元以来的纳秒数时,使用整数;否则,根据文档,将使用bignum或rational 当我使用不带参数的使用Ruby的时区混淆';s时间班,ruby,Ruby,值得注意的是,我使用的是Ruby 2.1.2,因此Time类使用带符号的63位整数。当整数可以表示自纪元以来的纳秒数时,使用整数;否则,根据文档,将使用bignum或rational 当我使用不带参数的::new时,它使用我的本地时区(非UTC)为我提供当前时间: 没错。现在是美国东海岸下午6点29分。现在我想查看EDT以东两个时区的当地时间: > t = Time.new(2015,6,30,18,29,8,"+02:00") => 2015-06-30 18:29:08 +020
::new
时,它使用我的本地时区(非UTC)为我提供当前时间:
没错。现在是美国东海岸下午6点29分。现在我想查看EDT以东两个时区的当地时间:
> t = Time.new(2015,6,30,18,29,8,"+02:00")
=> 2015-06-30 18:29:08 +0200
这就是我困惑的地方。当我在我的东面指定两个时区时,我希望会有两个额外的小时,因为每个时区是经度15度,每个时区用1小时表示
为什么它给了我与当地时间相同的时间,而不是两个小时后的时间?你认为正在发生的事情并不是正在发生的事情。您所做的是将该时间偏移为GMT+2,而不是当前时区的两个小时 如果您希望在您所在位置前两小时的偏移量处查看时间,那么您需要创建
时间的实例,获取本地时间,并按GMT偏移量移动该时间
Time.now.getlocal("-02:00")
如果要计算此值,必须先查看本地时间的utc\u偏移量
,然后加上或减去3600的乘积以及要移动的时区数。请注意,这仅以整数增量移动时区,并且在需要不同精度的时区(即纽芬兰)时会中断
“+02:00”是您设置的时间的时区,而不是您所在时区的偏移量。
Time.now.getlocal("-02:00")
t = Time.now
t.getlocal(t.utc_offset + (3600 * 2))