【发布时间】:2012-10-26 05:28:09
【问题描述】:
我正在尝试从数据库中获取时间戳值,将它们转换为日历,然后将它们转换回时间戳,但它们失去了精度。
这是重现问题的代码
import java.sql.Timestamp;
import java.util.Calendar;
public class Test {
public static void main(String[] args)
{
Timestamp timestamp = new Timestamp(112, 10, 5, 15, 39, 11, 801000000);
System.out.println("BEFORE "+timestamp.toString());
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(timestamp.getTime());
timestamp = new Timestamp(calendar.getTimeInMillis());
System.out.println("AFTER "+timestamp.toString());
}
}
这是转换的示例结果
BEFORE 2012-10-18 14:30:13.362001
AFTER 2012-10-18 14:30:13.362
它失去了精确性。 我该怎么做才能保持十进制值不变?
【问题讨论】:
-
我已经在我的 ide 中尝试过,但我没有得到这样的结果,每次打印都一样 -
Calendar calendar = Calendar.getInstance(); Timestamp timestamp = new Timestamp(new Date().getTime()); System.out.println("1 -> "+timestamp); // Thread.currentThread().sleep(1000); calendar.setTimeInMillis(timestamp.getTime()); timestamp = new Timestamp(calendar.getTimeInMillis()); System.out.println("2 -> "+timestamp); -
你能提供更多的上下文吗?你从哪里得到这些时间戳,你如何输出它们?
-
我已经更新了例子,很抱歉之前的错误结果是我的错。