有没有办法用 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 是正确的,如果你想要的话) - 他们的两个方向的范围都是几百万年。