2016-03-25 6 views
0

説明: GMT形式の時間がありますが、ISTに変換する必要があります。私はすでに行っていましたが、24時間はAM/PMで12時間形式で取得したいと考えています。ここGMTの時間をアンドロイドの12時間形式のISTに変換するにはどうすればよいですか?

が私のコードである

DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm'+00':ss"); 

utcFormat.setTimeZone(TimeZone.getTimeZone("IST")); 
Date date1; 
date1=utcFormat.parse(time); 
Log.e("IST",""+date1.toString());//After convert in IST i got Sat Mar 26 19:30:00 GMT+05:30 2016 

Date timestamp; 
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
timestamp = utcFormat.parse(time); 
Log.e("timestamp", "" + timestamp.toString()); //After convert in UTC i got Sat Mar 26 19:30:00 GMT+05:30 2016 
Log.e("Time",""+time.toString());//This is my time 2016-03-26T14:00+00:00 

問題は、私はISTとGMTのために同じ時間を持っています。 私は12時間で時間を得るよりも私はそうする必要がありますか?

この問題を解決するのを手伝ってください。

答えて

0

Dateクラスには実際のタイムゾーン情報が格納されていないことを覚えておいてください。ちょうどlongのUNIXエポック時間からのミリ秒の値です。 SimpleDateFormatTimeZoneは、と表示するときにのみ関連します。解析するときではありません。 Dateを印刷するときにIST日として、あなたのDateを印刷するために、あなたはその形式を使用する必要があります。

// Parse your time string 
DateFormat myFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm'+00':ss"); 
Date date = myFormat.parse(time); 

// Set a new format for displaying your time 
DateFormat isoFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); 
isoFormat.setTimeZone(TimeZone.getTimeZone("IST")); 

// This will print the IST time in the format specified: 2016-03-25T09:42:07+5:30 
String istTime = isoFormat.format(date); 
Log.d(istTime); 

12時間形式については、あなたが時間を印刷するとき、あなたは新しいSimpleDateFormatとそれを設定することができます。

/** 
* 'hh' is the 12-hour time format, while 'HH' is the 24-hour format 
* 'hh' will always print two digits, while 'h' will drop leading zeros 
* 'a' is the AM/PM marker 
*/ 
DateFormat dateFormat = new SimpleDateFormat("hh:mm a"); 

// This will print the current time, for example: 09:42 AM 
Log.d(dateFormat.format(new Date())); 

のAndroidは、現在のデバイスの設定に基づいてDateをフォーマットする便利DateUtilsクラスを、持っています。

+0

私はparseException例外があります。 –

+0

私の時間変数の値をDateFormatに解析したいdateFormat = new SimpleDateFormat( "hh:mm a"); formatそれは可能ですか? –

+0

@MilanGajeraいいえ、私はあなたを正しく理解しています。あなたの 'time'変数は' Date'オブジェクトを得るために解析したい 'String'です。その 'String'を解析するには、その形式に一致する' SimpleDateFormat'を使う必要があります。 'Date'オブジェクトには書式情報は含まれていませんが、それは文字通り' long'値( 'date.getTime()'から得た値)であり、他のメソッドは 'long'値。 'Date'オブジェクトの他の表現が必要な場合は、他の' SimpleDateFormat'オブジェクトを使用しなければなりません。 – Bryan

0

ここで私はDateFormatの別のオブジェクトを作成し、その内部にパラメータを渡しました。

//hh:mm a format of 12 hour with leading 0 before the hours, mm is for minutes and (a) is for AM/PM format. 
//where as HH is provides the format of 24 hours. 

ここには12時間のフォーマットがあります。

DateFormat utcFormat = new SimpleDateFormat("yyyy-MM-dd'T'hh:mm'+00':ss"); 
utcFormat.setTimeZone(TimeZone.getTimeZone("UTC")); 
DateFormat outputFormat = new SimpleDateFormat("hh:mm a"); 

String ist=outputFormat.format(utcFormat.parse(time)); 
関連する問題