本地和GMT时间不能给出正确的结果

时间:2015-06-13 20:24:15

标签: android simpledateformat gmt

我正在开发用于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;
    }

我总是得到发件人的当地时间而不是我的本地时间!  有什么问题?

0 个答案:

没有答案