strptime,as.POSIXct和as.Date返回意外的NA
当我尝试使用以下格式parsing时间戳时:“Thu Nov 8 15:41:45 2012”,只返回NA 。 
我使用Mac OS X R 2.15.2和Rstudio 0.97.237。 我的操作系统的语言是荷兰语:我想这与它有关。
 当我尝试strptime , NA被返回: 
 var <- "Thu Nov 8 15:41:45 2012" strptime(var, "%a %b %d %H:%M:%S %Y") # [1] NA 
  as.POSIXct工作: 
 as.POSIXct(var, "%a %b %d %H:%M:%S %Y") # [1] NA 
 我也尝试了上面的string作为date,但没有%H:%M:%S组件: 
 as.Date("Thu Nov 8 2012", "%a %b %d %Y") # [1] NA 
任何想法我可能做错了什么?
 我认为这完全是你猜的,因为你的语言环境, strptime不能parsing你的date时间string。 您的string包含缩写的星期几( %a )和缩写的月份名称( %b )。 这些时间规格描述?strptime : 
细节
%a: 此平台上当前语言环境中的缩写星期几名称
%b: 此平台上当前语言环境中的缩写月份名称。“请注意,缩写名称是特定于平台的(尽pipe标准规定在
C语言环境中,它们必须是大写英文名称的前三个字母:”“如果您希望使用
%a,%b或%h作为input格式的一部分,那么了解缩写是非常重要的:请参阅示例以了解如何检查。也可以看看
locales来查询或设置区域设置。
  locales的问题也与as.POSIXct , as.POSIXlt和as.Date 。 
 来自?as.POSIXct : 
细节
如果指定了格式,请记住某些格式规范是特定于语言环境的,您可能需要通过
Sys.setlocale正确设置LC_TIME类别。 这通常会影响%b,%B(月份名称)和%p(AM / PM)的使用。
 从?as.Date : 
细节
在适当和可用的情况下,使用与string相关的特定于语言环境的转换。 这会影响date和月份的名称。
 因此,如果string中的strptime as.POSIXct和月份名称与当前语言环境中的名称不同, strptime , as.POSIXct和as.Date无法正确parsingstring,并返回NA 。 
 但是,您可以通过更改locales来解决此问题: 
 # First save your current locale loc <- Sys.getlocale("LC_TIME") # Set correct locale for the strings to be parsed # (in this particular case: English) # so that weekdays (eg "Thu") and abbreviated month (eg "Nov") are recognized Sys.setlocale("LC_TIME", "en_GB.UTF-8") # or Sys.setlocale("LC_TIME", "C") #Then proceed as you intended x <- "Thu Nov 8 15:41:45 2012" strptime(x, "%a %b %d %H:%M:%S %Y") # [1] "2012-11-08 15:41:45" # Then set back to your old locale Sys.setlocale("LC_TIME", loc) 
用我的个人语言环境,我可以重现你的错误:
 Sys.setlocale("LC_TIME", loc) # [1] "fr_FR.UTF-8" strptime(var,"%a %b %d %H:%M:%S %Y") # [1] NA 
 只是混淆了同样的问题,并发现这个解决scheme更清洁,因为没有必要手动更改任何系统设置,因为在lubridate包中有一个包装函数执行这项工作,所有你需要做的是设置参数locale : 
 date <- c("23. juni 2014", "1. november 2014", "8. marts 2014", "16. juni 2014", "12. december 2014", "13. august 2014") df$date <- dmy(df$Date, locale = "Danish") [1] "2014-06-23" "2014-11-01" "2014-03-08" "2014-06-16" "2014-12-12" "2014-08-13"