在我的程序中,我需要从数据库中读取Time值,然后将该值转换为毫秒。 我是这样做的:
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小时)。
提前致谢。
答案 0 :(得分:1)
将数据从DB解析为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