java.util.Date 的有效范围?
我可以存储在java.util.Date中的有效值的范围是多少?API对此没有多说。
还是它只支持可以表示为 unix 时间戳的日期(即 1.1.1970 之后的日期)?如果是这样,JDK中是否有一个(可序列化的)类也支持在此之前的日期?
我正在寻找的是db4o中生日字段的类/类型
我可以存储在java.util.Date中的有效值的范围是多少?API对此没有多说。
还是它只支持可以表示为 unix 时间戳的日期(即 1.1.1970 之后的日期)?如果是这样,JDK中是否有一个(可序列化的)类也支持在此之前的日期?
我正在寻找的是db4o中生日字段的类/类型
它支持介于 Long.MIN_VALUE 和 Long.MAX_VALUE 之间的日期:
class DateTest {
public static void main(String[] args) {
DateFormat df = new SimpleDateFormat("d MMM yyyy G, HH:mm:ss.S Z");
System.out.println(df.format(new Date(Long.MIN_VALUE)));
System.out.println(df.format(new Date(0)));
System.out.println(df.format(new Date(Long.MAX_VALUE)));
}
}
输出
2 Dec 292269055 BC, 10:47:04.192 -0600
31 Dec 1969 AD, 18:00:00.0 -0600
17 Aug 292278994 AD, 01:12:55.807 -0600
(注:以上时间均为中部时间)
java.util.Date
使用 1970-01-01 作为参考,以毫秒为单位存储日期。由于 是 一个有符号的 64 位整数,因此您可以期望覆盖参考日期之前和之后的约 2.9 亿年 - 也就是说,如果您不关心准确的表示和日历系统切换。long
long
java.util.Date
除非你正在为恐龙计划一个生日派对,否则我会说java.util.Date可能适合你的目的......