как использовать TimeZone.getAvailableIDs для проверки правильности введенного часового пояса или нет в моем коде - PullRequest
1 голос
/ 24 апреля 2020

Это мой код, он преобразует строковую метку времени в unix метку времени, и я хочу проверить, является ли введенный часовой пояс действительным или нет. Кажется, я не могу вставить в него if, как я могу это сделать?

def parse_string_type_time(params: List[JValue]): JValue = params match {
  case a :: b :: c :: Nil =>
    val res = for {
      JString(timestamp) <- parse.toString(a)
      JString(pattern) <- parse.toString(b)
      JString(timezone) <- parse.toString(c)

      df = new SimpleDateFormat(pattern)

      _ = df.setTimeZone(TimeZone.getTimeZone(timezone)) // instead of using getTimeZone(), I want to use TimeZone.getAvailableIDs.

      jd <- Try(JString(df.parse(timestamp).getTime.toString)).toOption
    } yield jd
    res.getOrElse(JNothing)
  case _ => JNothing
}

1 Ответ

1 голос
/ 25 апреля 2020

1-й - Вы можете сделать if тест в понимании for. Это называется «сторож», и синтаксис немного отличается.

for {
  x <- aList
  if x > 5
  ...
}

Я также могу сделать это следующим образом.

for {
  x <- aList if x > 5
  ...
}

2-й - Как вы собираетесь проверить, если timezone действует? getTimeZone() просто по умолчанию используется GMT при неправильном вводе.


Ваш план должен работать ...

  . . .
  JString(timezone) <- parse.toString(c)
  if getAvailableIDs().contains(timezone)
  . . .

Обратите внимание, что нет блока "then" или предложения else , Охранник просто определяет, продолжается или заканчивается код for.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...