сопоставление даты / времени с регулярным выражением - PullRequest
0 голосов
/ 26 марта 2019

Я написал следующее регулярное выражение для сопоставления строк даты, похожих на:

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 Ответ

1 голос
/ 26 марта 2019

Я бы использовал 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...