如何在 r 中将复杂的字符串 (Mon Apr 06 22:19:45 PDT 2009) 转换为 date/time?

How do I transform a complicated character string (Mon Apr 06 22:19:45 PDT 2009) into a date/time in r?

我想将字符串中的日期 Mon Apr 06 22:19:45 PDT 2009 转换为 POSIXct 日期。

我试过了

dt <- strptime(df$date, "%a %b %d %H%M%S %Y")

datee <- parse_date_time(twit$date, "%a %b %d! %H!%M!%S! %Y!")

tand 得到了 NA 或错误消息。

我做错了什么?

谢谢。

我认为您无法转换带有嵌入式时区说明符的日期时间字符串

x2 <- "Mon Apr 06 22:19:45 2009"
strptime(x2,"%a %b %d %H:%M:%S %Y")
## [1] "2009-04-06 22:19:45 EDT"

您可以使用正则表达式提取时区并将其用作 tz 参数:

strptime(x2,"%a %b %d %H:%M:%S %Y",tz="PDT")
## [1] "2009-04-06 22:19:45 PDT"

正如@akrun 所建议的那样,

x3 <- 'Mon Apr 06 22:19:45 PDT 2009'
as.POSIXct(x3, "%a %b %d %H:%M:%S PDT %Y", tz='PDT') 
## [1] "2009-04-06 22:19:45 PDT"

或等效

strptime(x3, "%a %b %d %H:%M:%S PDT %Y", tz='PDT') 

如果您事先不知道数据将是 PDT,这将需要更多的工作...