【发布时间】:2016-03-23 07:02:30
【问题描述】:
我有一个带有“GMT”时区的 xts 对象,从我在整个网站上看到的情况来看,我可以使用 indexTZ() 来更改时区。我已经尝试了所有可能的技巧,首先指定“GMT”,然后将其更改为“IST”。当我第一次将时间戳转换为日期时间格式时指定“IST”:DF$DateTime= as.POSIXct(DF$DateTime/(10^9), origin="1970-01-01", tz = "IST") 但它仍然给了我“GMT”的时间。基本上,什么都不会发生。
> head(auro)
MP avgVWAP TradePressure Modify
2015-11-30 03:45:01 0.0000000000 0.0000117703 37 107
2015-11-30 03:45:02 0.0016475976 0.0004038842 11 30
2015-11-30 03:45:03 0.0007009310 0.0013219980 13 34
2015-11-30 03:45:04 -0.0003656419 -0.0002547382 11 0
2015-11-30 03:45:05 -0.0004572404 -0.0003604543 4 0
2015-11-30 03:45:06 0.0005486634 0.0003343666 7 -14
Warning message:
timezone of object (GMT) is different than current timezone (IST).
> indexTZ(auro)<- "IST"
> head(auro)
MP avgVWAP TradePressure Modify
2015-11-30 03:45:01 0.0000000000 0.0000117703 37 107
2015-11-30 03:45:02 0.0016475976 0.0004038842 11 30
2015-11-30 03:45:03 0.0007009310 0.0013219980 13 34
2015-11-30 03:45:04 -0.0003656419 -0.0002547382 11 0
2015-11-30 03:45:05 -0.0004572404 -0.0003604543 4 0
2015-11-30 03:45:06 0.0005486634 0.0003343666 7 -14
> indexTZ(auro)<- "UTC"
> head(auro)
MP avgVWAP TradePressure Modify
2015-11-30 03:45:01 0.0000000000 0.0000117703 37 107
2015-11-30 03:45:02 0.0016475976 0.0004038842 11 30
2015-11-30 03:45:03 0.0007009310 0.0013219980 13 34
2015-11-30 03:45:04 -0.0003656419 -0.0002547382 11 0
2015-11-30 03:45:05 -0.0004572404 -0.0003604543 4 0
2015-11-30 03:45:06 0.0005486634 0.0003343666 7 -14
Warning message:
timezone of object (UTC) is different than current timezone (IST).
我注意到我的时间和时区之间存在脱节。时间为“GMT”,但显示的时区为“IST”
> Sys.time()
[1] "2016-03-23 06:49:00.816 IST"
所以我认为首先更改系统时区可能会有所帮助,但事实并非如此。同样,什么也没有发生。
> Sys.setenv(TZ = "GMT")
> Sys.time()
[1] "2016-03-23 06:51:31.044 GMT"
> indexTZ(auro)<- "IST"
> head(auro)
MP avgVWAP TradePressure Modify
2015-11-30 03:45:01 0.0000000000 0.0000117703 37 107
2015-11-30 03:45:02 0.0016475976 0.0004038842 11 30
2015-11-30 03:45:03 0.0007009310 0.0013219980 13 34
2015-11-30 03:45:04 -0.0003656419 -0.0002547382 11 0
2015-11-30 03:45:05 -0.0004572404 -0.0003604543 4 0
2015-11-30 03:45:06 0.0005486634 0.0003343666 7 -14
Warning message:
timezone of object (IST) is different than current timezone (GMT).
知道为什么会这样吗?
indexTZ() 或 Sys.setenv() 是否只是更改时区而不将时间校准到指定的时区?
如果是这样的话,我该怎么做才能更改我的 xts 对象的时间和时区?
我做错了吗?
【问题讨论】:
-
不确定这是否能解决您的问题,但 IST 似乎不是 R 支持的时区。您可以尝试从
OlsonNames()的输出中选择合适的时区名称。 -
@RHertel 我不认为你是对的
> Sys.time() [1] "2016-03-23 13:15:32.470 IST"有一次,我重新启动了 R,时间和时区之间的脱节消失了。但问题依然存在 -
IST 也用于Israel Standard Time。这种模糊性可能是它在 R 中不被视为合适值的原因。正如
?Sys.timezone中所述:“时区是系统特定的主题”。我怀疑使用Sys.time()您只是在检索操作系统的时区;这可能与 R 使用的时区兼容,也可能不兼容。 -
@RHertel 有趣,我从来没有想到过。这回答了我的问题。奇怪的是,当它不识别它时它不会抛出错误。我到处都在使用“IST”。
-
印度标准时间 -- “亚洲/加尔各答”
标签: r datetime timezone xts posixct