R 从人类可读格式转换日期/时间

R 从人类可读格式转换日期/时间,r,R,我有一个可读的日期/时间:«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 您在as.POSIXct调用中忽略了时区,

我有一个可读的日期/时间:«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

您在
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"
#在格式中包含时区偏移

(pb.date已解决!非常感谢罗兰的帮助。 问题是工作日和月份的名称(人类可读的格式)显然是本地化的。因此,您只需要将您的区域设置更改为英语语言

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

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

谢谢。。。但一切都没有改变时区偏移量,你是指我忘记的%z标记吗?@jonathan:是的,“+0000”就是这个意思。请将来自
sessionInfo()
的输出编辑到您的问题中。该问题将使用来自“sessionInfo()”的输出刷新。:)您的语言环境是什么(
?Sys.getlocale
)?将您的语言环境更改为英语语言环境。工作日和月份的名称已本地化。我如何才能做到这一点?:)阅读我向你指出的帮助页面可能会有所帮助…@roland:太棒了!你说得对!非常感谢!:)
Sys.setlocale("LC_TIME", "en_US.utf8");
format(pb.date, tz="WET",usetz=TRUE)
[1] "2009-09-23 08:21:37 WEST"