【问题标题】:How to check if a string is in datetime format in R? [closed]如何检查字符串在R中是否为日期时间格式? [关闭]
【发布时间】:2020-10-23 23:16:16
【问题描述】:

编辑:是否可以检查字符串是否为某种格式,例如'y-m-d','h:m:s'

【问题讨论】:

  • 运行str()查看对象的结构。
  • 我似乎找不到关于 str() 的文档。但是如果我在 str() 中放置一个字符串,它只会是 R 中的 chr,它不会检查除此之外的任何内容。 @菲尔
  • 您应该提供一些示例来说明您期望函数的行为方式。如果您向我们展示您尝试了一些无效的方法,那就更好了。

标签: r tidyverse lubridate


【解决方案1】:
lubridate::is.timepoint(Sys.time())
#> TRUE
lubridate::is.timepoint(Sys.Date())
#> TRUE

来自?lubridate::is.timepoint的文档:

如果 x 是 POSIXct、POSIXlt 或 Date 对象,则为 TRUE,否则为 FALSE。


如果您只想识别日期时间而不是日期:

lubridate::is.POSIXt(Sys.time())
#> TRUE
lubridate::is.POSIXt(Sys.Date())
#> FALSE

编辑。

如果您想检查特定格式,可以尝试使用该格式读取它,如果得到 NA,则不是。

例如:

is.ymd_hms <- function(x) !is.na(lubridate::ymd_hms(x, quiet = TRUE))

is.ymd_hms("2020-01-01 22:22:22")
#> TRUE
is.ymd_hms("2020-31-01 22:22:22")
#> FALSE

无润滑:

is.ymd_hms2 <- function(x) !is.na(as.Date(x, "%Y-%m-%d %H:%M:%S"))

is.ymd_hms2("2020-01-01 22:22:22")
#> TRUE
is.ymd_hms2("2020-31-01 22:22:22")
#> TRUE

但是,lubridate 为您提供了更大的灵活性。喜欢:

is.ymd_hms("2020/01/01 22:22:22")
#> TRUE
is.ymd_hms2("2020/01/01 22:22:22")
#> FALSE

【讨论】:

  • 那么是否可以检查字符串是否为某种格式如'y-m-d','h:m:s'
  • 看看我的编辑
猜你喜欢
  • 1970-01-01
  • 2013-01-01
  • 2011-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2020-02-04
相关资源
最近更新 更多