当前位置: 首页 > 知识库问答 >
问题:

年字段具有指定的parseDefaulting冲突的DateTimeFormatterBuilder

丌官寒
2023-03-14

我有以下格式化程序

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());
System.out.println(ZonedDateTime.parse("201505", formatter));

就我对文档的理解而言,它应该只在没有解析值的情况下尝试替换默认值。似乎这工作的月份,因为我有不同的月份与默认的一个分析。然而,它多年来都不起作用。

我用错了吗?有人能告诉我是否有不同的方法来定义模式中可能不存在的字段的默认值吗?

共有1个答案

林德华
2023-03-14

问题是模式字母“y”指的是chronofield.year_of_era,而不是chronofield.year。只需更改最后一个parsedefaulting行:

.parseDefaulting(ChronoField.YEAR_OF_ERA, ZonedDateTime.now().getYear())

而且应该管用。

 类似资料:
  • 使用: 所有类都在中生成,在中没有类。没有-p开关,所有xsd都是在它们自己的默认包中生成的。但无法告诉wsimport为每个XSD使用特定的包。现在我使用以下绑定文件,这可能是不正确的,但wsimport对此没有抱怨: 在包org.broker.wsi.b_2和org.broker.wsi.t_1中,不生成任何文件。 欢迎提出建议。

  • 在令牌冲突的情况下,如何定义ANTLR lexer行为?让我解释一下“冲突”标记的含义。例如,假设定义了以下内容: 这里有一个冲突,因为在读取一系列数字后,lexer将不知道是有一个INT还是多个INT\u阶段标记(或两者的不同组合)。测试之后,如果INT是在INT\u阶段之后定义的,那么lexer会更喜欢查找INT\u阶段,但可能不是INT?否则,将找不到INT\u阶段。 另一个例子是: 我被告

  • 我正在使用Dagger,我有一个应用程序组件和一个子组件,分别具有范围和范围。现在,当我编译它时,我得到了以下错误: [io.droid.nowtellapp.dagger.SignInMvpComponet]io.droid.nowtellapp.dagger.SignInMvpComponet具有冲突的作用域:io.droid.nowtellapp.dagger.Application ati

  • 这里是我需要完成的,但是我刚开始哈希&甚至不知道从哪里开始。有人能帮帮我吗? 对由5个字符(A-Z和A-Z中的字符)组成的文本词设计一个名为Bailando的哈希函数。 提供一个算法(一组操作)来生成哈希函数的输出。尝试提出一个看起来没有冲突的哈希设计。 什么是基于您的设计的Bailando(“hello”)、Bailando(“three”)和Bailando(“olleh”)。 是否可以在哈希

  • 你能给我一些关于表的主键操作在Oracle中具有时间有效性的一些看法吗? 我创建了一个具有以下架构的表 是因为Oracle实际上并不关心主键上的有效期列吗? 提前道谢!