2

出于某种原因,as.POSIXct解释"2013-03-10 02:00:00.000"不同于该格式的其他有效日期时间。

> as.POSIXct("2013-03-10 01:00:00.000") #Different time, same date
[1] "2013-03-10 01:00:00 PST"

> as.POSIXct("2013-03-11 02:00:00.000") #Same time, different date
[1] "2013-03-11 02:00:00 PDT"

> as.POSIXct("2013-03-10 02:00:00.000")
[1] "2013-03-10 PST"

我正在使用该包RODBC从数据库中读取它,它会自动将整列日期时间转换为POSIXct类。这会导致整个列丢失时间信息。

4

1 回答 1

2

这是一个夏令时问题:显然 2013-03-10 的凌晨 2 点在该时区不存在。尽管如此,它不会抱怨(至少对我而言)有点有趣as.POSIXct,但会默默地返回一个有点奇怪的答案。一个问题可能是 R 通常将系统库用于其中的一些内容,因此底层库的心血来潮也是如此......

结合评论中的有用信息:@JoshUlrich 指出,您可以通过Sys.setenv(TZ="GMT")在导入数据之前使用来解决这个问题(假设原始数据确实是 GMT),因为RODBC使用系统级时区而不是允许您指定它。 ..

于 2013-05-29T18:49:02.087 回答