instant.truncatedTo(ChronoUnit.HOURS)返回的值大于原始值

时间:2016-04-13 15:10:30

标签: java java-time

根据Instant.truncatedTo ChronoUnit.HOURS所做的是

  

截断瞬间会返回带有字段的原始副本   小于指定的单位设置为零。

因此,如果我用 Instant.ofEpochMilli(-1); //1969-12-31T23:59:59.999Z Instant.ofEpochMilli(-1).truncatedTo(ChronoUnit.HOURS); //1970-01-01T00:00:00Z Instant.ofEpochMilli(1); //1970-01-01T00:00:00.001Z Instant.ofEpochMilli(1).truncatedTo(ChronoUnit.HOURS); //1970-01-01T00:00:00Z Instant.ofEpochMilli(2*60*60*1000).truncatedTo(ChronoUnit.HOURS); //1970-01-01T02:00:00Z Instant.ofEpochMilli(2*60*60*1000-1); //1970-01-01T01:59:59.999Z Instant.ofEpochMilli(2*60*60*1000-1).truncatedTo(ChronoUnit.HOURS);//1970-01-01T01:00:00Z 调用它,我希望小时不会被修改。这也是我在1970年之后使用日期调用它时所看到的。然而,在此之前它实际上返回的值大于原始值。这是预期的行为还是我错过了什么?

<doc>
  <field name="id">d1</field>
  <field name="content_type">parent_document</field>
  <doc>
    <field name="id">d2</field>  
    <field name="content_type">related_parent</field>
  </doc>
</doc>
<doc>
  <field name="id">d3</field>
  <field name="content_type">parent</field>
  <doc>
    <field name="id">d4</field>
    <field name="content_type">related_parent</field>
  </doc>
</doc>
<doc>
  <field name="id">d5</field>
  <field name="content_type">parent</field>
  <doc>
    <field name="id">d2</field>
    <field name="content_type">related_parent</field>
  </doc>
</doc>

1 个答案:

答案 0 :(得分:3)

  

这是预期的行为

没有它在Java 9中修复的a bug