- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有以下格式化程序:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyyMM")
.parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)
.parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)
.parseDefaulting(ChronoField.HOUR_OF_DAY, 0)
.parseDefaulting(ChronoField.DAY_OF_MONTH, 1)
.parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)
.parseDefaulting(ChronoField.YEAR, ZonedDateTime.now().getYear())
.toFormatter()
.withZone(ZoneId.systemDefault());
我尝试解析字符串“201505”
System.out.println(ZonedDateTime.parse("201505", formatter));
它抛出一个异常:
Caused by: java.time.DateTimeException: Conflict found: Year 2016 differs from Year 2015
如果我注释掉 YEAR 的默认值设置,它会起作用。
据我对文档的理解,如果没有解析值,它应该只尝试替换默认值。似乎这适用于一个月,因为我的月份与解析的默认月份不同。但是,它不适用于一年。
我是不是用错了,有人能告诉我是否有不同的方法来为模式中可能不存在的字段定义默认值吗?
最佳答案
问题是模式字母“y”指的是ChronoField.YEAR_OF_ERA
,而不是ChronoField.YEAR
。只需更改最后的 parseDefaulting
行:
.parseDefaulting(ChronoField.YEAR_OF_ERA, ZonedDateTime.now().getYear())
它应该可以工作。
关于java - DateTimeFormatterBuilder 与 YEAR 字段的指定 parseDefaulting 冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38307816/
我已经配置了格式化程序: public static final DateTimeFormatter DATE_FORMATTER = new DateTimeFormatterBuilder()
这个问题已经有答案了: Parsing LocalDate in Java: What's the pattern for "March 26 2020" (2 个回答) 已关闭 2 年前。 我有一个
假设我有一个日期,例如: Nov 30, 2013 19:00:00.001930000 Eastern Standard Time 我正在尝试使用 DateTimeFormatterBuilder
我正在使用 DateTimeFormatterBuilder() 来转换我接收的 JSON 数据(注释代码)并将它们转换为两种格式之一。为了决定使用哪种格式,我使用 REGEX 来查找正方形、 []
我正在尝试将以下时间戳解析为 ZonedDateTime: Sun Jan 20 16:08:59 +0000 2019 我喜欢尽可能避免使用在字符串中定义的模式,因为我经常忘记字符代表什么(“哈,'
我正在尝试创建一个 DateTimeFormatter以匹配以下示例(它实际上比这稍微复杂一些,但这无关紧要)。 20180302-17:45:21 我写了以下内容,但它导致了异常: new Date
我需要解析各种格式的日期。其中一些缺少“日”。现在我想默认到月底。我不确定是否有直接的方法可以默认为月底 DateTimeFormatter f = new DateTimeFormatterBuil
先写代码。 @Test public void testDateFormat() { // this is ok DateTimeFormat.forPattern("yyyy-MM-
目标 为可以处理以下格式之一的输入的 LocalDate 实例提供灵活的解析器: 年 年月 年月日 实现尝试 下面的类尝试处理第一个和第二个模式。解析适用于年份输入,但年份 + 月份会导致下面列出的异
我的要求是根据指定的一组有效格式验证日期字符串的格式是否正确。 有效格式: MM/dd/yy MM/dd/yyyy 我创建了一个简单的测试方法,它使用 Java 8 DateTimeFormatter
我正在尝试解析从 Bitbucket event payload 收到的以下日期字符串: 2017-09-19T10:39:36+1000 当传入日期位于偏移量 +0000 中时,它可以工作,但 +1
我正在尝试从 Joda 迁移到 Java 8 的 ZonedDateTime,但我遇到了似乎无法解决的 DateTimeFormatterBuilder 问题。 我想接受以下任何一种格式: 2013-
我有以下格式化程序: DateTimeFormatter formatter = new DateTimeFormatterBuilder() .appendPattern("yyyy
我正在尝试使用 返回的 DateTimeFormatter 来解析表示具有 IsoField.QUARTER_OF_YEAR 的 LocalDate 值的文本DateTimeFormatterBuil
我目前有一个 Joda 日期解析器,它使用 DateTimeFormatterBuilder 以及我可能收到的六种不同日期格式。 我正在迁移到 Java 8 的 Date 例程,但没有看到等效的例程。
这个问题已经有答案了: Can’t rid of 'T' in LocalDateTime (3 个回答) 已关闭 3 年前。 我有这段代码可以将字符串双向解析为 LocalDateTime: pub
我是一名优秀的程序员,十分优秀!