我有一个人类可读的日期/时间:«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()吗? 怎么了 ?编码问题? 最重要的是,为什么谷歌无法帮助我找到解决方案?没人做过吗? :)
感谢您的帮助,
> 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
答案 0 :(得分: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"
答案 1 :(得分:0)
解决了!非常感谢Roland的帮助。 问题是工作日和月份的名称(以人类可读的格式)显然是本地化的。因此,您只需将语言环境更改为英语语言环境。
Sys.setlocale("LC_TIME", "en_US.utf8");
format(pb.date, tz="WET",usetz=TRUE)
[1] "2009-09-23 08:21:37 WEST"
约书亚还看到了另一个小错误......它没有解决这个问题,但可能是下一个问题。谢谢他! :)