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