- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 返回的
方法。DateTimeFormatter
来解析表示具有 IsoField.QUARTER_OF_YEAR
的 LocalDate
值的文本DateTimeFormatterBuilder#buildFormatter()
有问题的文本是“20 Oct 2018 Q2”。对于传统日历年(此处为“2018”)来说,季度值(“Q2”)无疑是不正确的。不过,我正在处理的会计年度于 6 月 30 日结束,因此日期“2018 年 10 月 20 日”将位于该会计年度的第二季度。
格式化程序是使用以下代码构建的:
TemporalQuery<LocalDate> query = LocalDate::from;
String pattern = “d MMM uuuu qqq”;
Locale locale = Locale.forLanguageTag("en-US");
TemporalField tf = IsoFields.QUARTER_OF_YEAR;
Map<Long, String> m = new Hashtable<>();
m.put(4L, “Q2”);
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern(pattern)
.appendText(tf, m)
.toFormatter(locale);
TemporalAccessor value = formatter.parse(text, query)
尝试解析会生成带有错误消息的 DateTimeParseException
:“无法在索引 0 处解析文本“20 Oct 2018 Q2””
我尝试更改 parseCaseInsensitive()
... appendText()
方法的调用顺序。尽管在其中一种变体中指定的索引为 14,但仍会引发异常。
问题的可能原因:DateTimeFormatterBuilder#appendText(TemporalField, Map) 方法可能仅适用于格式操作,而不适用于此处的解析。
预先感谢您的任何想法或帮助!
最佳答案
您尝试解析季度年部分两次 - 每个模式指令一次(使用字母 q),每个构建器指令一次(使用方法appendText)。解决方案:删除模式中的 qqq 部分并使用“d MMM uuuu”。
但是一些评论:
HashMap
而不是过时的 Hashtable
。LocalDate.of(2018, 10, 20)
(并且没有有关您的特殊区域的信息)。关于java - DateTimeFormatterBuilder#appendText(TemporalField, Map<Long,String>) 解析时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52904624/
我已经配置了格式化程序: 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
我是一名优秀的程序员,十分优秀!