java.sql.Time getTime 不返回良好的值



在我的程序中,我需要从数据库中读取一个时间值,然后将该值转换为毫秒。我是这样做的:

Time t = getTimeFromDatabase();
long millis = t.getTime();

问题是millis的值对应于比数据库中输入的时间早 1 小时的时间值。

例如:假设数据库中的值是 09:30:00。因此,如果我这样做:

Time t = getTimeFromDatabase();    
System.out.println(t.toString);
System.out.println(t.getTime);

输出将是:

09:30:00
30600000

现在。。。09:30:00 没问题。这就是它在数据库中的情况。

30600000 / 3600000 = 8.5(3600000 是每小时毫秒)。这意味着此以毫秒为单位的值对应于 08:30:00。

09:

30:00 的正确值应为 34200000。

我的问题是无论时区如何,我如何才能获得正确的值(我在 UTC +1 中,所以我想这与我的问题有关)。

我尝试过其他时间值,但它总是相同的(1 小时前)。

提前谢谢。

将数据库中的数据解析为 Time 对象时,应使用格式化程序并设置正确的时区。

SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = timeFormat.parse(dataFromDB); // dataFromDB is a "09:30:10" like String
System.out.println(timeFormat.format(date));  // will print time in HH:mm:ss format
System.out.println(date.getTime()); // will print milliseconds

相关内容

  • 没有找到相关文章