如何使用java.sql.Time构造函数从long值创建时间

时间:2014-07-01 10:23:04

标签: java sql time

我有几毫秒的时间,我需要插入Postgresql数据库。我的问题是,当我使用构造函数java.sql.Time()时,我有正确的时间,但还有一个小时!!

例如:如果我有503000 miliseconds,则new java.sql.Time(503000) = 01:08:23,当正确答案为00:08:23

我的代码只有:

new java.sql.Time(miliseconds);

问题是什么?我读了一些关于时区的内容。在这种情况下,我如何解决这个问题?

我需要创建一个具有这些毫秒的Date对象,并插入到我的数据库中。

  

myObject.setDuration(new Time(duration)); // setDuration有一个   日期参数

提前致谢

2 个答案:

答案 0 :(得分:2)

java.sql.Time旨在根据当前时区提供时间,例如......

Time ts = new Time(503000);
System.out.println(ts);
System.out.println(ts.getTime());

输出

10:08:23
503000

对我来说。

您可以使用SimpleDateFormat ....

进一步测试
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss Z");
System.out.println(sdf.format(ts));

哪个输出

10:08:23 +1000

答案 1 :(得分:0)

您的输出00:08:23取决于您当地的时区。

请参阅我的示例;

Time t1 = new java.sql.Time(503000);
System.out.println(t1); //print 06:38:23 - my local timezone


SimpleDateFormat sdfm = new SimpleDateFormat("HH:mm:ss");
sdfm.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(sdfm.format(t1));    //print 00:08:23 - GMT timezone