0
在我的程序中,我需要从数据库中读取一个Time值,然后将该值转换为毫秒。 我不喜欢这样写道: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小时前)。
在此先感谢。
在DB不是9:30。在数据库中的毫秒数和你看到的9:30只是格式化的值。所述格式是基于时区的,数据库中将会有一个格式,并且可能会有一个用于显示数据的客户端连接。 – Michal 2014-12-27 14:52:07
我重新读你的问题。关键是,对于您的TZ,09:30:00的正确值为30600000.如果这是您的要点,请使用UTC作为TZ。 – Michal 2014-12-27 14:57:23
什么数据库?什么是列的数据类型,*完全*? – 2014-12-27 18:31:37