R:我如何检查时间戳的格式?

时间:2017-11-21 11:46:27

标签: r datetime

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

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")

使其格式正确。

2 个答案:

答案 0 :(得分:3)

默认情况下,

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

答案 1 :(得分:0)

我不知道任何这样的功能。以下是我要做的事情:

curr.time <- strftime(Sys.time(), "%Y-%m-%d")
if(!grepl('\\d{4}-\\d{2}-\\d{2}', as.character(curr.time))) {stop("Complain")}