UTCdateTimeをDBに保存する必要があります。
特定のタイムゾーンで指定されたdateTimeをUTCに変換しました。そのために私は以下のコードに従いました。
入力dateTimeは「2012122510:00:00Z」です。タイムゾーンは「Asia / Calcutta」です。
サーバー/ DB(oracle)は同じタイムゾーン(IST)「Asia / Calcutta」で実行されています。
この特定のタイムゾーンでDateオブジェクトを取得します
        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()));
DBに保存
        if (tsSchedStartTime != null) {
            stmt.setTimestamp(11, tsSchedStartTime);
        } else {
            stmt.setNull(11, java.sql.Types.DATE);
        }
出力
DB(oracle)はdateTime: "20121225 10:00:00、UTCではなく同じものを保存しています。
以下のSQLから確認しました。
     select to_char(sched_start_time, 'yyyy/mm/dd hh24:mi:ss') from myTable
私のDBサーバーも同じタイムゾーン「アジア/カルカッタ」で実行されています
それは私に以下の外観を与えます
- Date.getTime()UTCではありません
- または、タイムスタンプはDBに保存するときにタイムゾーンに影響を与えます。ここで何が間違っていますか?
もう1つの質問:
のtimeStamp.toString()ようにローカルタイムゾーンで印刷java.util.dateしますか?UTCではありませんか?