これは私の日付です "15-05-201400:00:00"
iSTをUTCに変換する方法(つまり、2014年5月14日18:30:00)
私のコードは
DateFormat formatter = new SimpleDateFormat("dd MMM yyyy HH:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("IST")); //here set timezone
System.out.println(formatter.format(date));
formatter.setTimeZone(TimeZone.getTimeZone("UTC")); //static UTC timezone
System.out.println(formatter.format(date));
String str = formatter.format(date);
Date date1 = formatter.parse(str);
System.out.println(date1.toString());
ユーザーがいずれかのゾーンから同じ日付を入力すると、UTC時刻が取得されます(例:オーストラリアから、2014年5月15日00:00:00から2014年5月14日16:00:00)
何か提案をしてください。
「その日付値を他のタイムゾーンまたはUTCに変換」することはできません。タイプJava.util.Date
には内部タイムゾーン状態がなく、仕様によって変更できない方法でUTCのみを参照します。ユーザー(UTCタイムゾーンでUNIXエポックからのミリ秒を数えるだけで、飛躍的な秒数は残ります)。
ただし、Java.util.Date
のフォーマットされた文字列表現を別のタイムゾーンに変換できます。タイムゾーン(およびパターン)ごとに1つずつ、2つの異なるフォーマッターを使用することを好みます。また、「アジア/コルカタ」を使用することをお勧めします。これは、普遍的に機能するためです(ISTは、イスラエルでは異なる解釈が行われる「イスラエル標準時」の場合もあります)。
DateFormat formatterIST = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
formatterIST.setTimeZone(TimeZone.getTimeZone("Asia/Kolkata")); // better than using IST
Date date = formatterIST.parse("15-05-2014 00:00:00");
System.out.println(formatterIST.format(date)); // output: 15-05-2014 00:00:00
DateFormat formatterUTC = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
formatterUTC.setTimeZone(TimeZone.getTimeZone("UTC")); // UTC timezone
System.out.println(formatterUTC.format(date)); // output: 14-05-2014 18:30:00
// output in system timezone using pattern "EEE MMM dd HH:mm:ss zzz yyyy"
System.out.println(date.toString()); // output in my timezone: Wed May 14 20:30:00 CEST 2014