推导R中两次之间的差异

Derive difference between two times in R

我正在从一个API请求的输出中提取一个时间变量,输出格式如下。

> a
[1] "2019-09-06T09:03:14.938Z"

第一个objective是推导与Sys.time()的区别

> b<- Sys.time()
> b
[1] "2019-09-06 08:57:08 UTC"

我在 运行 基本 c = a-b

方面遇到问题
> c<-a-b
Error in `-.POSIXt`(a, b) : can only subtract from "POSIXt" objects

尝试将 a 转换为 POSIXT 对象时,出现以下错误:

> c<-as.POSIXct.Date(a)
Error in unclass(x) * 86400 : non-numeric argument to binary operator

第二个 objective 是让代码等待,直到时差为正或零。也许使用 sys.sleep?

您需要在转换为 POSIXct 对象时传递正确的 format

a <- as.POSIXct("2019-09-06T09:03:14.938Z", format = "%Y-%m-%dT%T")

然后

b - a

你也可以 difftimeunits 参数并且可以接受 "secs", "mins", "hours","days", "weeks"

difftime(b, a, units = "mins")

问题的第二部分不是很清楚但是,我们可以写一个while循环使代码"wait"直到时差为正或0。

while(a > Sys.time()) { }

使用lubridate将字符串转换为POSIXct对象,然后你可以从另一个中减去

library(lubridate)
as_datetime("2019-09-06 08:57:08 UTC") - as_datetime("2019-09-06T09:03:14.938Z")
Time difference of -6.115633 mins

回答你的第二个问题(关于在 API 个请求之间等待)Sys.sleep() 非常适合这个

Sys.sleep(5) # sleeps 5 seconds