如何解析 threeten DateTIme

How to parse threeten DateTIme

提问人:Leandro Borges Ferreira 提问时间:12/17/2016 更新时间:12/18/2016 访问量:1238

问:

我正在尝试解析这个 DateTime:

DateTimeFormatter dateTimeFormatter = new DateTimeFormatterBuilder()
                    .appendPattern("dd/MM/yyyy hh:mm:ss")
                    .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
                    .parseDefaulting(ChronoField.MILLI_OF_SECOND, 0)
                    .toFormatter();

            String ultimaAtualizacaoTexto = "17/12/2016 01:41:43";

            LocalDateTime ultimaAtualizacaoDateTime =
                    LocalDateTime.parse(ultimaAtualizacaoTexto, dateTimeFormatter);

但是我收到此错误:

DateTimeParseException: Text '17/12/2016 01:41:43' could not be parsed: Unable to obtain LocalDateTime from TemporalAccessor: DateTimeBuilder[fields={MilliOfSecond=0, MinuteOfHour=41, MicroOfSecond=0, NanoOfSecond=0, HourOfAmPm=1, SecondOfMinute=43}, ISO, null, 2016-12-17, null], type org.threeten.bp.format.DateTimeBuilder

我不确定这是怎么回事......它应该完全有效!

对此有什么帮助吗?无论如何,谢谢!

Android Java-Time ThreeTenBP

评论


答:

1赞 Leandro Borges Ferreira 12/18/2016 #1

所以。。。我不得不将“dd/MM/yyyy hh:mm:ss”更改为“dd/MM/yyyy HH:mm:ss”

因为 hh 仅适用于上午 12 点/下午 12 点。HH 为 24 小时。

评论

0赞 Meno Hochschild 12/19/2016
这是一个非常常见的错误。有大量的 SO 帖子包含此错误。它并不特定于 Threeten 或 Java-8,但在 和 中也很常见。有些人在格式中使用不带 am/pm 标记的“h”时甚至没有注意到任何问题(有效地打印了错误的数据),但错误地认为一切都没问题。这启发了我在自己的时间库中构建一些模式健全性检查。其他库肯定也可以从这样的检查中获利。SimpleDateFormatJoda-Time