2017-03-01 40 views
0

私は、UTCタイムスタンプを他のゾーン固有のタイムスタンプに変換する必要があるという要件に取り組んでいます.Belowは異なるタイムゾーンのリストです。UTCタイムスタンプを他のタイムゾーン固有の時刻に変換する

CET UTC+0100 
CST UTC+0800 
CST UTC-0600 
EST UTC-0500 
IST UTC+0530 
MET-1METDST 
SGT UTC+0800 
SST-8 


public static String convertUTCTimeStampToOtherZoneTimestamp(Timestamp timestamp,String timeZone){ 
    String zoneSpecificTimeStamp=""; 
    try { 
     DateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     TimeZone zoneTime = TimeZone.getTimeZone(timeZone); 
     gmtFormat.setTimeZone(zoneTime); 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     String inputDateString = sdf.format(timestamp); 
     sdf.setTimeZone(TimeZone.getTimeZone("UTC")); 
     zoneSpecificTimeStamp=gmtFormat.format(sdf.parse(inputDateString)); 
     } catch (ParseException e) { 
     e.printStackTrace(); 
     return zoneSpecificTimeStamp; 

     } 
    return zoneSpecificTimeStamp; 
} 

上記のコードは、EST、PST、ISTのようなタイムゾーンのためではなく、プログラムが間違った結果を与えているリストに記載された他のタイムゾーンの作業罰金です。このための正しい解決方法で私に更新してください

+1

これは何度も尋ねられています。まず検索してください。ヒント:「CET」ではなく、「ヨーロッパ/パリ」のようなタイムゾーン名を使用する必要があります。 –

+0

彼は実際には正しいです、同じ地理的な場所は夏と冬に異なるタイムゾーンを持っています。 – hoaz

+0

java 8を使用している場合は、zoneddateを試してみてください。https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html – Maverick

答えて

2

オフセット付きのフルネームまたはGMTのみを使用してください。

ID - TimeZoneのID。 "PST" などのような "アメリカ/ Los_Angeles"、またはカスタムIDとして完全な名前のいずれかと略語 "は、GMT-8:00"。略語のサポートは、JDK 1.1.xとの互換性のみを目的としており、完全な名前を使用する必要があることに注意してください。あなたが提供している全ての時間帯についてはhttps://docs.oracle.com/javase/8/docs/api/java/util/TimeZone.html#getTimeZone-java.lang.String-


、あなたはメソッドに渡すことができる2つの方法があります。

GMTはちょうど"GMT {offset}"例として文字列を渡す

をOFFSET:...

"GMT+0800"代わりの"CCST UTC+0800"

"GMT-0600"代わりの"CST UTC-0600"

など

略語(推奨されません)

それとも、あなたも持っている略語渡す:代わりに"CST UTC+0800"

"ESTの代わりものの"EST UTC-0500"

NOTE

"CST"をあなたの元で使用されている略語amplesは動作するように見えますが、略語は互換性のために書かれています。

+0

提案していただきありがとうございます。 GMTのオフセットは動作していますが、これらの2つのタイムゾーンをどのように処理するか。 MET1METDST SST-8 –

+0

SST、METなどを使用してください。実際の省略形を渡す必要があります。そうでない場合は、GMTを使用してオフセットを渡します。 –

+1

ドキュメントの引用文にはフルネームのみを使用しています。略語を使っても大丈夫だと言います。そうではありません。いくつかの仕事だけが、下位互換性のためにそこにしかありません。 –

関連する問題