将日期/时间戳与正则表达式匹配

时间:2019-03-26 10:23:07

标签: regex scala

我编写了以下正则表达式来匹配日期字符串,如下所示:

2019/01/02 08:20:19

正则表达式为val reg = "([\\d]{4})/([\\d]{2})/([\\d]{2}) ([\\d]{2}).*.r"

Scala函数是:

val dateExtraction: String => Map[String, String] = {
  string: String => {
    string match {
      case reg(year, month, day, hour) =>
                 Map(YEAR -> year, MONTH -> month, DAY -> day, HOUR -> hour )
      case _  => Map(YEAR -> "", MONTH -> "", DAY -> "", HOUR -> "")
    }
  }
}
val YEAR = "YEAR"
val MONTH = "MONTH"
val DAY = "DAY"
val HOUR= "HOUR"

我想从正则表达式中获取年,月,日和小时。 但是,上面的日期未按预期进行解析,并且得到的结果为空。请知道如何解决此问题。

1 个答案:

答案 0 :(得分:1)

我会使用java.time来解决此类问题,例如:

  val input = "2019/01/02 08:20:19";
  val formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss")
  val dt = LocalDateTime.from(formatter.parse(input)).atZone(ZoneId.systemDefault())

  dt.getYear() // 2019
  dt.getMonthValue() // 1
  dt.getDayOfMonth() // 2
  dt.getHour() // 8