Я преобразовал дату и время, заданные в определенном часовом поясе, в формат UTC. для этого я выполнил приведенный ниже код.
Моя дата и время ввода — «20121225 10:00:00 Z», часовой пояс — «Азия/Калькутта»
Мой сервер/БД (оракул ) работает в том же часовом поясе (IST) «Азия/Калькутта»
Получить объект Date в этом конкретном часовом поясе< /p>
Код: Выделить всё
String date = "20121225 10:00:00 Z";
String timeZoneId = "Asia/Calcutta";
TimeZone timeZone = TimeZone.getTimeZone(timeZoneId);
DateFormat dateFormatLocal = new SimpleDateFormat("yyyyMMdd HH:mm:ss z");
//This date object is given time and given timezone
java.util.Date parsedDate = dateFormatLocal.parse(date + " "
+ timeZone.getDisplayName(false, TimeZone.SHORT));
if (timeZone.inDaylightTime(parsedDate)) {
// We need to re-parse because we don't know if the date
// is DST until it is parsed...
parsedDate = dateFormatLocal.parse(date + " "
+ timeZone.getDisplayName(true, TimeZone.SHORT));
}
//assigning to the java.sql.TimeStamp instace variable
obj.setTsSchedStartTime(new java.sql.Timestamp(parsedDate.getTime()));
Код: Выделить всё
if (tsSchedStartTime != null) {
stmt.setTimestamp(11, tsSchedStartTime);
} else {
stmt.setNull(11, java.sql.Types.DATE);
}
БД (оракул) сохранила ту же дату и время: " 20121225 10:00:00 не в формате UTC.
Я подтвердил из приведенного ниже sql.
Код: Выделить всё
select to_char(sched_start_time, 'yyyy/mm/dd hh24:mi:ss') from myTable
Это дает мне следующий вид:
[*]
Код: Выделить всё
Date.getTime()[*]Или временная метка влияет на часовой пояс при сохранении в БД.
Что я здесь делаю не так?
Еще один вопрос:
Будет ли timeStamp.toString() напечатан в местном часовом поясе, как это делает java.util.date? Не UTC?
Подробнее здесь: https://stackoverflow.com/questions/140 ... e-specific
Мобильная версия