我正在开发用于Android的IM应用程序,我想使用"上次见过"让朋友看到有朋友下线的时候。 我的想法是: 1. 在客户端,当用户离开应用程序时,它会向服务器发送包含GMT时间的特殊消息。 2。在服务器端,服务器将时间(gmt)传递给朋友。 3。在其他客户中,每个客户将GMT时间转换为当地时间。 以下是我构建要发送的消息的方式:
if (Status.toLowerCase().equals("offline")) {
Status =EsTools.getGMTtimaDate(System.currentTimeMillis());//Important
EntryActivity.currentOpenChatID = "none";
}
Log.d("offline--","will send status = "+ Status);
OnlineMsg.putExtra("action", "com.__.MESSAGE");
String nowtime = "" + System.currentTimeMillis();
OnlineMsg.putExtra(ConstantsGCM.TYPECLM, ConstantsGCM.ONST);
OnlineMsg.putExtra(ConstantsGCM.STATUS_on_of,Status);// if offline the time in GMT Zone
OnlineMsg.putExtra(ConstantsGCM.TO_CLM, "-01");
OnlineMsg.putExtra("V",ver);
final String Msgid= UUID + nowtime;
OnlineMsg.putExtra(ConstantsGCM.NAME_CLM,userName);
final Bundle bndl = OnlineMsg.getExtras();
和getGMTtimaDate()函数代码:
public static String getGMTtimaDate(long currentLocal) {
SimpleDateFormat GMTsdfTime = new SimpleDateFormat("dd/MM/yyyy - ( HH:mm:ss )");
GMTsdfTime.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
String GMTtime=GMTsdfTime.format(currentLocal); //currentLocal=System.currentTimeMillis()
Log.d("times--","GMT= "+GMTtime);
return GMTtime;
}
现在我们将GMT时间发送到服务器 收件人会将GMT转换为localTime:
String localFromGMT=EsTools.getLocalFromGMT(intent.getStringExtra(ConstantsGCM.STATUS_on_of));
localFromGMT()函数代码是:
public static String getLocalFromGMT(String GMT) {
long timeInMilliseconds=0;
Date LocalTime= null;
try {
SimpleDateFormat GMTsdfTime = new SimpleDateFormat("dd/MM/yyyy - ( HH:mm:ss )");
GMTsdfTime.setTimeZone(TimeZone.getTimeZone("Etc/UTC"));
LocalTime = (Date) EntryActivity.GMTsdfTime.parseObject(GMT);// to parse GMT Time
timeInMilliseconds = LocalTime.getTime(); // GMT in milliseconds
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat LocalsdfTime = new SimpleDateFormat("dd/MM/yyyy - ( HH:mm:ss )");
String local= EntryActivity.LocalsdfTime.format(timeInMilliseconds);// convert to local
Log.d("times--","Local From... Gmt= "+local);
return local;
}
我总是得到发件人的当地时间而不是我的本地时间! 有什么问题?