gpt4 book ai didi

java - 将 java.sql.Timestamp 转换为 java.util.Calendar 而不会丢失精度

转载 作者:IT老高 更新时间:2023-10-28 21:06:19 25 4
gpt4 key购买 nike

我正在尝试从数据库中获取时间戳值,将它们转换为日历,然后将它们转换回时间戳,但它们失去了精度。

这是重现问题的代码

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

它失去了精确性。我该怎么做才能保持十进制值不变?

最佳答案

您以 毫秒 为单位设置时间,但您的输入精度以 微秒 为单位,因此您当然会丢失任何比毫秒更精细的精度。

日历不支持比毫秒更精细的粒度。没有变通办法。

关于java - 将 java.sql.Timestamp 转换为 java.util.Calendar 而不会丢失精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13248016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com