timeNoTzParser :: A.Parser TimeOfDay
timeNoTzParser = do
  hour <- between 0 23 A.decimal
  minute <- between 0 59 (A.char ':' *> A.decimal)
  second <- between 0 60 (A.char ':' *> A.decimal)
  usecs <-
    A.peekChar >>= \case
      Just _ -> between 0 (pred 1000000) (A.char '.' *> A.decimal)
      Nothing -> pure 0
  pure (hour, minute, second, usecs)
timeNoTzParser :: A.Parser TimeOfDay
timeNoTzParser = do
  hour <- between 0 23 A.decimal
  minute <- between 0 59 (A.char ':' *> A.decimal)
  second <- between 0 60 (A.char ':' *> A.decimal)
  usecs <-
    A.peekChar >>= \case
      Just _ -> between 0 (pred 1000000) (A.char '.' *> A.decimal)
      Nothing -> pure 0
  pure (hour, minute, second, usecs)
timeNoTzParser = do
  hour <- between 0 23 A.decimal
  minute <- between 0 59 (A.char ':' *> A.decimal)
  second <- between 0 60 (A.char ':' *> A.decimal)
  usecs <-
    A.peekChar >>= \case
      Just _ -> between 0 (pred 1000000) (A.char '.' *> A.decimal)
      Nothing -> pure 0
  pure (hour, minute, second, usecs)