我正在为实例消息使用smackapi。我想将当前时间与消息一起发送。所以我已经将当前时间设置为消息主题。然后在接收方获取该时间。但问题是消息主题应该是字符串,所以我必须在发送方将日期时间转换为字符串,然后在接收方再次从字符串转换为日期时间。我希望发件人的日期时间应该根据收件人的时区进行转换。我已经写了如下代码,但我无法将日期时间转换为接收者的时区的日期时间。
//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);
我有一个类似的输出
消息主题=>8月22日星期三13:35:13 GMT+00:00 2012
从字符串转换为日期后=>8月22日星期三07:35:13 MDT 2012
设置接收器的时区后=>8月22日星期三06:35:13 GMT-07:00 2012
实际接收端时间=>8月22日星期三06:39:56 MDT 2012
编辑
实际上,我想把发送方的时间发送给接收方,在接收方,应该根据接收方的时区进行转换。如上所述,接收方的实际时间与转换时间不同。所以,如果你有不同的代码,请在这里张贴。
使用纯long表示时间。(Long.toString(new Date().getTime())。它不包含(也不需要)任何TZ信息,因此更灵活。