2015-09-30 28 views
1

我查询数据的基础上,并取回日期在EST时间转换为GMT时间而不改变日期

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" 

载体,但我想的时区是在GMT时间。

我怎样才能得到结果,看起来像

d 
[1] "2015-06-19 00:38:08 GMT" "2015-06-19 00:38:33 GMT" 
+0

你有没有试过? – Heroka

+1

'as.POSIXlt(d,tz =“GMT”)''给出''2015-06-19 00:38:08 GMT“' –

+0

当我运行它时它改变了时间 – user3022875

回答

1

首先,我们需要让美国纽约时间时间(这EST”也是模棱两可,由于在澳大利亚以及在东部时区的存在,以明确的方式,更好的是EST5EDT或“美国/纽约”)如果您运行在不同的时区,使用你没有得到,同时代码:

> 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在GMT/UCT/UTC时区的“同时”输出:

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

我希望这是一个如何strptime处理日期时间输入一个公平的总结:

日期时间隐式地输入到由区域设置设置的当前时区中,任何尾随的tz指示符都会被忽略而不发出任何警告,并将其作为UCT存储,其偏移由语言环境与UCT的差异决定。时区格式化% - 'specials'仅用于strftimeformat.POSIXt的输出。

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" 
+0

在阅读这个问题会导致一个“不同的时间”,尽管我承认这个短语含糊不清。 –

+0

@BondedDust我同意。但是,如果将OP的输入(问题的第一行)与期望的输出(最后一行)进行比较,则所有改变的都是tz。是的,绝对是不同的时代。 – jlhoward

+1

我认为我们基本同意。这很可能是你想要的答案。对于实时运行的国际银行系统,我认为重要的是要明白,使用R的日期时间系统很容易获得误导性的结果。日期 - 时间对象的设计在引擎盖下使用了UCT,但数据输入可能非常混乱。 –

相关问题