首页 文章

日期,时区和POSIXct

提问于
浏览
0

我只是一个大数据文件,“DATE”列存储为O5JAN2004,06JAN2004等字符 . 此数据文件中的时间与NewYork时间相匹配,我住在洛杉矶 .

然后我使用as.Date将字符转换为日期 .

t <- as.Date(key$DATE[1], format = "%d%b%Y")
[1] "2004-01-05"

但是当我使用as.POSIXct(t)时,它会返回我:

> as.POSIXct(t)
[1] "2004-01-04 16:00:00 PST"
 > as.POSIXlt(t)
[1] "2004-01-05 UTC"

我尝试了网站上提到的几种方法,但结果没有改变:

t <- as.Date(key$DATE[1], format = "%d%b%Y", 'PST')
t <- as.Date(key$DATE[1], format = "%d%b%Y", 'EST')
t <- as.Date(key$DATE[1], format = "%d%b%Y", tz="America/New_York")
t <- as.Date(keyi$DATE[1], format = "%d%b%Y", tz="America/Los_Angeles")
as.POSIXct(t, tz = "America/Los_Angeles")
as.POSIXct(t, tz = "America/New_York")

我想知道:当我使用as.POSIXct(t)时,我能做什么,它会返回“2004-01-05 PST”或任何其他时区 .

我在想因为Date最初存储为字符,所以它不会记住它的原始时区,对吧?

我明白了

as.Date(as.POSIXct(t))
> "2004-01-05"

但是为什么as.POSIXct(t)会返回先前的结果?因为我还有其他数据文件,我会使用as.POSIXct(t)获得“2004-01-05 PST” .

谢谢!

1 回答

  • 1

    您的 as.POSIXlt(t) 显示 as.Date 默认使用GMT . 但 as.POSIXct 默认使用本地时间,因此存在不需要的转换 . 但你可以解决这个问题 .

    strptime 具有 tz 参数以指定基准时区 . 这对我有用:

    t = strptime(key$DATE[1], format = "%d%b%Y", tz= "America/Los_Angeles")
    as.POSIXct(t)
    [1] "2004-01-05 PST"
    

    警告:作为tz的值有什么作用和什么不作用似乎相当奇怪 .

相关问题