Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ruby的时区混淆';s时间班_Ruby - Fatal编程技术网

使用Ruby的时区混淆';s时间班

使用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

值得注意的是,我使用的是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 +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))