我可以存储在java.util.Date中的有效值的范围是什么? API对此没有太多说明。java.util.Date的有效范围?
还是它只支持可以表示为unix时间戳的日期(即1970年1月1日之后的日期)?如果是这样,那么在JDK中是否有一个(serializeable)类可以支持之前的日期?
我正在寻找的是db4o中
我可以存储在java.util.Date中的有效值的范围是什么? API对此没有太多说明。java.util.Date的有效范围?
还是它只支持可以表示为unix时间戳的日期(即1970年1月1日之后的日期)?如果是这样,那么在JDK中是否有一个(serializeable)类可以支持之前的日期?
我正在寻找的是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
(注:以上时间均为美国中部时间)
日期可以1.1.1970之前包含值,只需使用负长:-)
java.util.Date
商店日期生日场的一类/类型以1970-01-01作为参考的毫秒为long
。由于long
是一个有符号的64位整数,因此您可以预期java.util.Date
覆盖参考日期前后约2.9亿年 - 即如果您不关心精确表示和日历系统切换。
除非你正在规划一个恐龙生日聚会,我会说,java.util.Date可能是你的目的罚款...
这很有帮助,谢谢。我不知道负值对于时间戳是有效的。 – Dexter 2011-03-30 15:06:07
它并没有突破,你只是不打印时代领域... – 2011-03-30 15:16:38
@Michael Borgwardt - 虽然“日期”本身没有时代字段(至少不是一个可访问的一个) - 如果我要包装它在“日历”中可以打印。 – 2011-03-30 15:24:27
猜猜Date.toString()做了什么(在猜测System.println(Object)的作用之后)。 – 2011-03-30 15:26:52