Ich muss UTC dateTime in DB speichern.
Ich habe die in einer bestimmten Zeitzone angegebene dateTime in UTC konvertiert. dafür folgte ich dem folgenden Code.
Mein EingabedatumZeit ist "20121225 10:00:00 Z" Zeitzone ist "Asien / Kalkutta"
Mein Server / DB (Orakel) läuft in derselben Zeitzone (IST) "Asien / Kalkutta"
Holen Sie sich das Date-Objekt in dieser bestimmten Zeitzone
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()));
In DB speichern
if (tsSchedStartTime != null) {
stmt.setTimestamp(11, tsSchedStartTime);
} else {
stmt.setNull(11, java.sql.Types.DATE);
}
AUSGABE
DB (Orakel) hat das gleiche dateTime: "20121225 10:00:00
nicht in UTC angegeben gespeichert .
Ich habe aus dem unten stehenden SQL bestätigt.
select to_char(sched_start_time, 'yyyy/mm/dd hh24:mi:ss') from myTable
Mein DB-Server läuft auch in derselben Zeitzone "Asia / Calcutta"
Es gibt mir die folgenden Erscheinungen
Date.getTime()
ist nicht in UTC- Oder der Zeitstempel hat Auswirkungen auf die Zeitzone beim Speichern in DB. Was mache ich hier falsch?
Noch eine Frage:
Wird timeStamp.toString()
wie in der lokalen Zeitzone gedruckt java.util.date
? Nicht UTC?