Я использую модуль ThreeTen, и когда я печатаю ZonedDateTime.now(), я получаю.
2019-07-11T22:43:36.564-07:00[America/Los_Angeles]
Что это за формат?
Я попробовал uuuu-MM-dd'T'HH:mm:ss.SSS'Z', и он говорит:
org.threeten.bp.format.DateTimeParseException: Text '2019-07-11T22:43:36.564-07:00[America/Los_Angeles]' could not be parsed at index 23
Итак, после SSS часть 'Z' неверна.
Каков правильный способ его реализации?
Это мой код:
val pstTime = ZonedDateTime.now(ZoneId.of("America/Los_Angeles")).toString()
val timeFormatter = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ss.SSS'Z'")
val mTime = LocalDateTime.parse(pstTime, timeFormatter).toString()
tv_pstTime.text = mTime
Я хочу разобрать его в такой формат, как Tuesday, July 2 5:15:01 P.M.
Как я могу это сделать?
вы можете увидеть символы [ и ] в строке. Я думаю, вам нужно добавить их в свой формат. Что-то вроде этого: yyyy-MM-dd'T'HH:mm:ss.SSS['Z']
@Sony Мне сказали, что uuuu лучше.
@Сони uuuu по сравнению с yyyy в кодах шаблонов форматирования DateTimeFormatter в Java?
Кавычки вокруг Z означают, что в строке даты и времени должен быть литерал Z. Никогда используйте это, это важно. (Если бы в вашей строке был Z, это было бы смещение, и вам нужно было бы анализировать его как таковое, а не как литерал.)
Вы можете использовать DateTimeFormatter.ofPattern("...."). Внутри .ofPattern("....") может быть любой узор на ваше усмотрение.
Так:
val result = ZonedDateTime.now(ZoneId.of("America/Los_Angeles"))
.format(DateTimeFormatter.ofPattern("EEEE, MMMM d HH:mm:ss a"))
Выход: Thursday, July 11 23:51:21 PM
Вы просмотрели конкретные вопросы спрашивающего и четко определили, что ему действительно нужно. Действительно отлично подходит для первого ответа на переполнение стека. Спасибо и добро пожаловать сюда!
уууу-ММ-дд или гггг-ММ-дд?