转换为GMT时间而不更改日期

时间:2015-09-30 15:06:38

标签: r

我查询数据库并在EST时间内找回日期向量

d =as.POSIXct(c("2015-06-19 00:38:08 EST","2015-06-19 00:38:33 EST"))
d

这里的载体

d
[1] "2015-06-19 00:38:08 EST" "2015-06-19 00:38:33 EST"

但我想要时区是格林尼治标准时间。

如何获得类似

的结果
d
[1] "2015-06-19 00:38:08 GMT" "2015-06-19 00:38:33 GMT"

2 个答案:

答案 0 :(得分:2)

喜欢这个?我不确定你想要完成什么。您问题的标题要求"更改时间,不更改日期"但是你的例子只改变了时区。这会在您的示例中生成结果。

d <- as.POSIXct(c("2015-06-19 00:38:08 EST","2015-06-19 00:38:33 EST"))
d
# [1] "2015-06-19 00:38:08 EDT" "2015-06-19 00:38:33 EDT"
as.POSIXct(as.character(d),tz="GMT")
# [1] "2015-06-19 00:38:08 GMT" "2015-06-19 00:38:33 GMT"

答案 1 :(得分:1)

首先,我们需要有一个明确的方式在美国纽约时间(由于在澳大利亚也存在东部时区,EST和#34;也是模糊的)。更好的是EST5EDT或&#34; America / New_York&#34;。)如果你运行在不同时区使用的代码,你就不会得到同样的时间:

> d =as.POSIXct(c("2015-06-19 00:38:08 EST","2015-06-19 00:38:33 EST"))
> d
[1] "2015-06-19 00:38:08 PDT" "2015-06-19 00:38:33 PDT"

字符时间的时区部分在创建时基本上被as.POSIXct忽略。而是使用:

> d =as.POSIXct(c("2015-06-19 00:38:08 EST","2015-06-19 00:38:33 EST"), tz="America/New_York", usetz=TRUE)
> d
[1] "2015-06-19 00:38:08 EDT" "2015-06-19 00:38:33 EDT"

请注意,已显示夏令时的正确显示。然后你可以使用format.POSIXt输出&#34;同时&#34;在GMT / UCT / UTC时区:

> format(d, tz="GMT")
[1] "2015-06-19 04:38:08" "2015-06-19 04:38:33"

我希望这是strptime如何处理日期时间输入的公平摘要:

  

在语言环境设置设置的当前时区中隐式输入日期时间,其中任何尾随tz指示符被忽略且没有警告,并存储为UCT,其偏移量由区域设置与UCT的差异确定。时区格式化% - &#39;特价&#39;仅用于strftimeformat.POSIXt的输出。