2016-02-01 3 views
5

私は、次のコードスニペットを使用してIST形式に変換しています。私はそれを実行するときに私はそれを実行するときに私はそれを変換しない、それはutc時間自体を表示する。任意の設定がサーバー側に必要です。私を助けてください。javaのUTCからIST時間への変換はLOCALでは行われていますが、CLOUD SERVERではなく

コードスニペット:

DateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
    sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
    String pattern = "dd-MM-yyyy HH:mm:ss"; 
    SimpleDateFormat formatter; 
    formatter = new SimpleDateFormat(pattern); 

    try { 
     String formattedDate = formatter.format(utcDate); 
     Date ISTDate = sdf.parse(formattedDate); 
String ISTDateString = formatter.format(ISTDate); 
      return ISTDateString; 
} 
+2

「IST」(インドの標準時間;アイルランドの標準時間;イスラエルの標準時間);サーバー上のJVMのデフォルトのタイムゾーンは何ですか? –

+0

'utcDate'の種類は何ですか?私はそれが 'java.util.Date'だと仮定します。 –

+0

コードは実際にISTに変換されることはありません。文字通りsdfを "UTC"に設定し、フォーマットされた日付を解析するだけです。 – Paddez

答えて

2

のJava DateオブジェクトはUTCですでに/常にあります。タイムゾーンは、テキストに書式設定するときに適用されるものです。 A Dateは、UTC以外のタイムゾーンでは使用できません。

したがって、utcDateISTDateに変換するというコンセプトには欠陥があります。
:、そしてあなたが要求する必要がありますが、コードはISTのタイムゾーンにテキストとして日付を返すようにしたい場合は、今すぐ

(BTW。悪い名前Javaの規則は、それがistDateあるべきと言う)こと:

DateFormat formatter = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
formatter.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata")); // Or whatever IST is supposed to be 
return formatter.format(utcDate);