1

我有一个人类可读的日期/时间:« Wed Sep 23 07:21:37 +0000 2009 »

从昨天开始,我只是尝试将其转换为日期/时间对象。

pb.txt <- "Wed Sep 23 07:21:37 +0000 2009"
pb.date <- as.POSIXct(pb.txt, format="%a %b %d %H:%M:%S +0000 %Y")
format(pb.date, tz="WET",usetz=TRUE)
[1] NA

我可以改用 strptime() 吗?怎么了 ?编码问题?最重要的是,为什么 Google 不能帮助我找到解决方案?没有人做过吗?:)

谢谢你的帮助,

> sessionInfo()
R version 3.0.1 (2013-05-16)
Platform: i686-pc-linux-gnu (32-bit)

locale:
 [1] LC_CTYPE=fr_FR.UTF-8       LC_NUMERIC=C               LC_TIME=fr_FR.UTF-8       
 [4] LC_COLLATE=fr_FR.UTF-8     LC_MONETARY=fr_FR.UTF-8    LC_MESSAGES=fr_FR.UTF-8   
 [7] LC_PAPER=C                 LC_NAME=C                  LC_ADDRESS=C              
[10] LC_TELEPHONE=C             LC_MEASUREMENT=fr_FR.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
[1] tools_3.0.1
4

2 回答 2

3

您忽略了as.POSIXct通话中的时区,因此正在使用您系统的时区(最好的 R 可以确定它是什么)。"WET"我的猜测是,由于夏令时,时间不存在。

# include the timezone offset in the format
(pb.date <- as.POSIXct(pb.txt, format="%a %b %d %H:%M:%S %z %Y"))
# [1] "2009-09-23 02:21:37 CDT"
format(pb.date, tz="WET",usetz=TRUE)
# [1] "2009-09-23 08:21:37 WEST"
于 2013-05-23T14:17:56.700 回答
0

解决了 !非常感谢罗兰的帮助。问题是工作日和月份的名称(以人类可读的格式),它们显然是本地化的。因此,您只需要将语言环境更改为英语语言。

Sys.setlocale("LC_TIME", "en_US.utf8");
format(pb.date, tz="WET",usetz=TRUE)
[1] "2009-09-23 08:21:37 WEST"

Joshua 还看到了另一个小错误……它不能解决这个问题,但可能是下一个问题。也谢谢他!:)

于 2013-05-24T09:08:32.787 回答