【问题标题】:Why isn't indexTZ() working and changing the time?为什么 indexTZ() 不工作并改变时间?
【发布时间】: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 我不认为你是对的&gt; 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


【解决方案1】:

正如 cmets 中提到的,“IST”不是有效的时区。最好以 Country/City 格式指定时区。如果您这样做,打印的时间将会更新。

require(xts)
Lines <- "datetime,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"
x <- as.xts(read.zoo(text=Lines,FUN=as.POSIXct,tz="GMT",header=TRUE,sep=","))
x
#                                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(x) <- "Asia/Kolkata"
x
#                               MP       avgVWAP TradePressure Modify
# 2015-11-30 09:15:01  0.0000000000  0.0000117703            37    107
# 2015-11-30 09:15:02  0.0016475976  0.0004038842            11     30
# 2015-11-30 09:15:03  0.0007009310  0.0013219980            13     34
# 2015-11-30 09:15:04 -0.0003656419 -0.0002547382            11      0
# 2015-11-30 09:15:05 -0.0004572404 -0.0003604543             4      0
# 2015-11-30 09:15:06  0.0005486634  0.0003343666             7    -14

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 2018-02-23
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多