您正在 R 中寻找两个不同的函数。第一个将它从字符串转换为日期时间,从所有意图和目的来看,它只是一个数字。为此,您必须指定字符串的格式。您可以使用as.POSIXct(my_dates, format='%Y-%m-%dT%H:%M:%S') 执行此操作。这会将对象返回为POSIXct 对象,这允许我们对其进行“时间数学”。下一步是计算差异。这可以通过difftime 函数来完成。由于您希望它在连续值上完成,您可以使用difftime(tail(my_dates, -1), head(my_dates, -1)) 来获取差异向量。完整代码如下:
> x = c('2018-03-08T21:40:46.555Z', '2018-03-08T21:43:52.492Z', '2018-03-08T21:43:52.691Z', '2018-03-08T21:48:07.593Z', '2018-03-08T21:48:08.729Z', '2018-03-08T21:54:59.071Z', '2018-03-08T21:54:59.121Z', '2018-03-08T21:55:00.636Z', '2018-03-08T21:55:00.694Z')
> y = as.POSIXct(x, format='%Y-%m-%dT%H:%M:%S')
> z = difftime(tail(y, -1), head(x, -1))
> z
Time differences in hours
[1] 21.73111 21.73111 21.80194 21.80222 21.91639 21.91639
[7] 21.91667 21.91667
您可以通过更改difftime中的units参数来获得不同时间单位的结果。
> z = difftime(tail(y, -1), head(x, -1), units='days')
> z
Time differences in days
[1] 0.9054630 0.9054630 0.9084144 0.9084259 0.9131829
[6] 0.9131829 0.9131944 0.9131944