为什么在使用 as.POSIXct 转换下面的时间戳时我得到了所有 NA?
> head(tmp$timestamp_utc)
[1] Fri Jul 03 00:15:00 EDT 2015 Fri Jul 03 00:45:00 EDT 2015 Fri Jul 03 01:15:00 EDT 2015 Fri Jul 03 01:45:00 EDT 2015 Fri Jul 03 02:15:00 EDT 2015
[6] Fri Jul 03 02:45:00 EDT 2015
> tmp$timestamp_utc<- as.POSIXct(tmp$timestamp_utc, "%m/%d/%Y %H:%M:%S", tz="GMT")
> head(tmp$timestamp_utc)
[1] NA NA NA NA NA NA
Run Code Online (Sandbox Code Playgroud)
更新: 1. 最初的问题是格式错误,下面的一些朋友指出。正确的格式不会生成 NA 2。然后我发现 EDT 没有转换为 GMT,尽管在 as.POSIXCT 中添加了“GMT”。使用 with_tz 解决了这个问题。
> as.POSIXct("Fri Jul 03 00:15:00 EDT 2015", format="%a %b %d %H:%M:%S EDT %Y", tz="GMT")
[1] "2015-07-03 00:15:00 GMT"
> with_tz(as.POSIXct("Fri Jul 03 00:15:00 EDT 2015", format="%a %b %d %H:%M:%S EDT %Y"),"GMT")
[1] "2015-07-03 04:15:00 GMT"
Run Code Online (Sandbox Code Playgroud)
我相信这是您想要的格式:
as.POSIXct("Fri Jul 03 00:15:00 EDT 2015", format="%a %b %d %H:%M:%S EDT %Y", tz="GMT")
任何回答您的特定问题并回应评论的方法都不起作用,因为您的格式参数未正确指定。
编辑:这有点超出最初提出的问题,但您可以根据更改时区转换时间如下(支持问题here):
time <- "Fri Jul 03 00:15:00 EDT 2015"
format1 <- "%a %b %d %H:%M:%S EDT %Y"
time2 <- as.POSIXct(time, format=format1, tz="EST")
attr(time2, "tzone") <- "GMT"
time2
[1] "2015-07-03 05:15:00 GMT"
Run Code Online (Sandbox Code Playgroud)