Ist java.sql.Timestamp timezone spezifischen?

Habe ich zum speichern UTC-dateTime in der DB.
Ich habe konvertiert, die dateTime -, die in bestimmten Zeitzone zu UTC. dafür folgte ich dem code unten.
Mein input dateTime "20121225 10:00:00 Z" Zeitzone "Asia/Calcutta"
Mein Server/DB(oracle) läuft in der gleichen Zeitzone(MEZ) "Asia/Calcutta"

Bekommen das Date-Objekt in diesem 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()));

Speichern in die DB

        if (tsSchedStartTime != null) {
            stmt.setTimestamp(11, tsSchedStartTime);
        } else {
            stmt.setNull(11, java.sql.Types.DATE);
        }

AUSGABE

DB (oracle) gespeichert hat, die gleichen dateTime: "20121225 10:00:00 nicht in UTC.

Ich bestätigt haben von der folgenden sql -.

     select to_char(sched_start_time, 'yyyy/mm/dd hh24:mi:ss') from myTable

Mein DB-server läuft auch auf der gleichen Zeitzone "Asia/Calcutta"

Es gibt mir die unten Auftritte

  1. Date.getTime() ist nicht in UTC
  2. Oder Timestamp hat, Zeitzone Auswirkungen beim speichern in die DB
    Was mache ich hier falsch?

Noch eine Frage:

Wird timeStamp.toString() drucken im lokalen Zeitzone wie java.util.date? Nicht UTC?

Die Antwort auf die Frage in Ihrem Titel, Nein, java.sql.Der Zeitstempel basiert auf UTC. Die Anzeige der timestamp timezone bestimmten.
Le Blanc Dank!. Könnten Sie bitte mir Antworten, "new java.sql.Timestamp(parsedDate.getTime())" zurückkehren wird, GMT-timestamp-Objekt für meine Mitarbeit?
Obwohl java.sql.Timestamp ist in UTC, bei der Speicherung in ein TIMESTAMP-Feld ohne Zeitzone-information es nutzt die äquivalente Datum/Uhrzeit in der aktuellen Zeitzone der virtuellen Maschine
Sugumar: Ja. die getTime-Methode des Date-Klasse gibt die Anzahl der Millisekunden seit dem 1. Januar 1970, 00:00:00 GMT.
Daneben habe ich nicht bekommen, Ihren Punkt "speichern in ein TIMESTAMP-Feld ohne Zeitzone-information es nutzt die äquivalente Datum/Uhrzeit in der aktuellen Zeitzone der virtuellen Maschine". Könnten Sie bitte erläutern Sie Ihre Antwort. Es werden mehr hilfreich für mich.

InformationsquelleAutor Kanagavelu Sugumar | 2012-12-28

Schreibe einen Kommentar