问题很简单,却找不到答案。如果我有一些虚拟时间戳记:

foo <- strftime(Sys.time(), "%Y-%m-%dT%H:%M:%SZ")


格式:

"%Y-%m-%dT%H:%M:%SZ".


如何检查foo是什么格式?我需要检查用户是否以正确的格式提交了时间戳,因此需要类似

if (func_bar(foo) != "%Y-%m-%dT%H:%M:%SZ") {stop("Complain")}


是否有固有的R函数?

更新:(为清楚起见),我了解我可以自动为用户更改格式,即仅转换提交日期。但是在这种情况下,我想抓住它。例如,我可以使用:

foo1 <- as.POSIXlt(Sys.time(), "UTC", "%Y-%m-%dT%H:%M:%S")

foo <- strftime(foo1, "%Y-%m-%dT%H:%M:%SZ")


将其转换为正确的格式。

最佳答案

Sys.time()默认将当前时间输出为POSIXct。您的用户会提交我假设的字符时间。如果尝试将其转换为POSIXct,除非它具有您指定的确切格式,否则它将变为NA。因此,类似这样的方法将起作用:

if (is.na(as.POSIXct('2017-01-01 05:00:00', format = "%Y-%m-%dT%H:%M:%SZ"))) {

  stop('Date not in the right format')

}
#Error: Date not in the right format

09-10 01:55
查看更多