【发布时间】:2018-02-04 12:44:07
【问题描述】:
我刚刚读取了一个大数据文件,“日期”列存储为 O5JAN2004、06JAN2004 等字符。此数据文件中的时间与纽约时间匹配,我住在洛杉矶。
然后我使用 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”。
谢谢!
【问题讨论】: