R / Salesforce 日期时间集成

R / Salesforce Datetime integration

我对 R 中 ISO 8601 日期时间的特定格式有疑问 - 示例:

2016-12-28T13:00:56.000Z
2016-12-28T13:03:10.000Z
2016-12-28T13:08:26.000Z
2016-12-28T13:13:00.000Z
2016-12-28T13:34:49.000Z
2016-12-28T13:42:44.000Z
2016-12-28T13:51:43.000Z
2016-12-28T13:52:30.000Z
2016-12-28T13:53:03.000Z

到目前为止,我还没有成功使用 lubridate 进行解析,我正在考虑使用 regex 来先分解它并删除 T/Z。或者我可以用 strptime 做什么?这也可能是一种选择。理想情况下,这将为 list/vector 中的所有实例进行管道传输,例如:

df %>% 
select(datetime) %>% 
sapply(as.character) %>% 
parse_date_time('YmdHMS') -> df$datetime

这里的实际问题是我的对象类型最初是一个列表 - 在 unlist 之后,几种不同的解析方法立即起作用。始终密切关注您的对象类型!

只需将其粘贴到 anytime() 中,它就可以正确使用 多种 格式(无需指定它们)并且当然可以与 ISO 8601 一起使用:

R> tvec <- read.csv(text="2016-12-28T13:00:56.000Z
2016-12-28T13:03:10.000Z
2016-12-28T13:08:26.000Z
2016-12-28T13:13:00.000Z
2016-12-28T13:34:49.000Z
2016-12-28T13:42:44.000Z
2016-12-28T13:51:43.000Z
2016-12-28T13:52:30.000Z
2016-12-28T13:53:03.000Z", header=FALSE)[,1]
R> 

刚刚分配给您的数据(以 not-too-reproducible 格式显示)。那么:

R> library(anytime)     ## load package, and we're basically done
R> anytime(tvec)
[1] "2016-12-28 13:00:56 CST" "2016-12-28 13:03:10 CST" "2016-12-28 13:08:26 CST" 
[4] "2016-12-28 13:13:00 CST" "2016-12-28 13:34:49 CST" "2016-12-28 13:42:44 CST" 
[7] "2016-12-28 13:51:43 CST" "2016-12-28 13:52:30 CST" "2016-12-28 13:53:03 CST"
R> 

对于基础 R 解决方案:

> as.POSIXct("2016-12-28T13:00:56.000Z", format = "%Y-%m-%dT%H:%M:%S.000Z")
[1] "2016-12-28 13:00:56 CET"