jdk1.6 中文api 里关于 timestamp有这样的描述:
只有整数秒才会存储在 java.util.Date
组件中。小数秒(毫微秒)是独立存在的。
这里单独存在的应该就是nanos,但是只有整数秒才会存储在 java.util.Date
组件中么?
Timestamp tm;
.............
new Date(tm.getTime())的方式将tm保存起来,再通过new Timestamp(date.getTime())的方式还原timestamp,精度没有丢失,那么date里应该保存了毫微秒nanos,这不是跟“只有整数秒才会存储在 java.util.Date
组件中”矛盾么?
假如Date里可以保存毫微秒,为什么timestamp还要多出一个成员变量nanos?
我去试了一个小时,情况基本像你说的一样。这两个类都是精确的,因为它们是储存long的毫秒数的。但是date是不能访问毫秒数。它虽然储存了所有精度,但不能访问毫秒。但timestamp就行,通过nanos访问。