インスタンスメッセージにsmack apiを使用しています.メッセージで現在の時刻を送信したいので、現在の時刻をメッセージの件名として設定し、受信側でその時刻を取得します.しかし、問題はメッセージの件名が文字列でなければならないことです.そのため、送信者側で日時を文字列に変換し、受信者側で文字列から日時に再度変換します。送信者の日時を受信者のタイムゾーンに従って変換する必要があります。以下のようにコードを書きましたが、できます日時を受信者のタイムゾーンの日時に変換します。
//sender side
Calendar c = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");
String strdt= formatter.format(c.getTime());
message.setSubject(strdt);
受信側
TimeZone tz = TimeZone.getDefault();
String strzone=tz.getDisplayName(false, TimeZone.SHORT);
String str=message.getSubject();
Date expiry = null;
SimpleDateFormat formatter = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");
formatter.setTimeZone(TimeZone.getTimeZone(strzone));
try {
expiry = formatter.parse(str);
}
catch (Exception e)
{e.printStackTrace();}
SimpleDateFormat df = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzzz yyyy");
df.setTimeZone(TimeZone.getTimeZone(strzone));
String formattedDate1= df.format(expiry);
Log.i("receiving time",formattedDate1);
私は次のような1つの出力を得ました
メッセージの件名 => 2012 年 8 月 22 日水曜日 13:35:13 GMT+00:00
文字列から日付への変換後 => Wed Aug 22 07:35:13 MDT 2012
受信機のタイムゾーンを設定した後 => Wed Aug 22 06:35:13 GMT-07:00 2012
実際の受信側時間 => Wed Aug 22 06:39:56 MDT 2012
編集
実際には、送信者の時間を受信者に送信したいのですが、受信者側では、受信者のタイムゾーンに従って変換する必要があります。上記のように、受信者の実際の時間は変換時間とは異なります。別のコードがある場合は、ここに投稿してください。