在android中将日期时间从一个时区转换为另一个时区



我正在为实例消息使用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信息,因此更灵活。

相关内容

  • 没有找到相关文章

最新更新