有没有办法用 java.util.date 表示 BC 日期?
Is there a way to represent BC dates with java.util.date?
是的,我知道 java.util.Date 已经过时了。话虽这么说,有没有办法使用这个 class 来表示 1 CE 之前的日期,或者我必须迁移到不同的 class?
平凡,没有。 根本无法用 java.util.Date
表示日期。任何日期。
j.u.Date
是用词不当,已过时 API 您不应该使用。它实际上表示时间的瞬间,与时区无关,因此与年、月和日的概念无关。这就是为什么例如.getYear()
已弃用,为什么 j.u.Date
唯一的字段是一个包含 epochmillis 的 long。
您必须迁移到 java.time
. Specifically, java.time.LocalDate
。
请注意,您可以表示时间时刻,一旦将它们置于时区中,就可以在 1CE 之前。 epochmillis-in-a-long(这是 System.currentTimeMillis()
所代表的,j.u.Date
是一个非常糟糕的包装器,但是 java.time.Instant
是正确的,如果你想要的话) - 他们的两个方向的范围都是几百万年。
是的,我知道 java.util.Date 已经过时了。话虽这么说,有没有办法使用这个 class 来表示 1 CE 之前的日期,或者我必须迁移到不同的 class?
平凡,没有。 根本无法用 java.util.Date
表示日期。任何日期。
j.u.Date
是用词不当,已过时 API 您不应该使用。它实际上表示时间的瞬间,与时区无关,因此与年、月和日的概念无关。这就是为什么例如.getYear()
已弃用,为什么 j.u.Date
唯一的字段是一个包含 epochmillis 的 long。
您必须迁移到 java.time
. Specifically, java.time.LocalDate
。
请注意,您可以表示时间时刻,一旦将它们置于时区中,就可以在 1CE 之前。 epochmillis-in-a-long(这是 System.currentTimeMillis()
所代表的,j.u.Date
是一个非常糟糕的包装器,但是 java.time.Instant
是正确的,如果你想要的话) - 他们的两个方向的范围都是几百万年。