У меня есть время в miliseconds, и мне нужно вставить в базу данных Postgresql. Моя проблема в том, что когда я использую конструктор java.sql.Time()
, у меня есть правильное время, но с еще одним часом!
Например: если у меня есть 503000 miliseconds
, new java.sql.Time(503000) = 01:08:23
, когда правильный ответ 00:08:23
Мой код только:
new java.sql.Time(miliseconds);
В чем проблема?? Я кое-что прочитал о часовом поясе. В этом случае, как я могу это решить?
Мне нужно создать объект Date с этими miliseconds и вставить в мою базу данных.
myObject.setDuration (новое время (продолжительность)); // где setDuration имеет параметр Date
заранее спасибо
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
Ваш выход 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