首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >日期、时区和POSIXct

日期、时区和POSIXct
EN

Stack Overflow用户
提问于 2017-08-27 03:08:09
回答 1查看 1.6K关注 0票数 3

我刚刚读取了一个很大的数据文件,"DATE“列被存储为类似于O5JAN2004,06JAN2004的字符。这个数据文件中的时间与NewYork时间相匹配,我住在洛杉矶。

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

代码语言:javascript
复制
t <- as.Date(key$DATE[1], format = "%d%b%Y")
[1] "2004-01-05"

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

代码语言:javascript
复制
 > as.POSIXct(t)
[1] "2004-01-04 16:00:00 PST"
 > as.POSIXlt(t)
[1] "2004-01-05 UTC"

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

代码语言:javascript
复制
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“或任何其他时区。

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

我确实得到了

代码语言:javascript
复制
as.Date(as.POSIXct(t))
> "2004-01-05"

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

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-08-27 03:45:43

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

strptime有一个tz参数来指定基本时区。这对我很有效:

代码语言:javascript
复制
t = strptime(key$DATE[1], format = "%d%b%Y", tz= "America/Los_Angeles")
as.POSIXct(t)
[1] "2004-01-05 PST"

警告:对于tz来说,什么值起作用,什么值不起作用,似乎相当奇怪。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45898792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档