我有几毫秒的时间,我需要插入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有一个 日期参数
提前致谢
答案 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