将收到的日期时间转换为Android的本地时区时间

时间:2016-07-22 20:16:52

标签: android time timezone

美好的一天。我正在建立一个聊天应用程序。为了达到目的,我决定发送已发送消息的日期。没有人在不同国家/地区的日期必须显示不同。例如,让我们选择2个不同的国家/地区并假设它们之间的差异是2小时.CountryX和CountryY。用户从CountryX发送消息,时间可以说是15:00。我正在服务器上保存这个,用户发送的确切时区时间,正好是15:00作为CountryX。第二个用户收到CountryY中的消息,这个消息在CountryX中的时间超过2小时,所以基本上我必须在CountryY中显示的时间必须是17:00。这就是问题。如何将已知时区的已接收时间转换为本地时间为了显示正确吗?我做了很多谷歌,但所有我想出来的解决方案,您只需要获得确切国家/地区的时间,而不是将CountryX发送时间转换为CountryY当地时间以在CountryY中正确显示。请你能提供帮助吗?非常感谢你。

1 个答案:

答案 0 :(得分:-1)

对于因此而受苦的每个人。我最终用我自己的逻辑创建了自己的课程,并且它完美无瑕地工作,并作为额外的奖励方式与方便的方法

public class Time {
    public static String getCurrentTime() {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        String finalFormat = year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
        if (month < 10) {
            String finalMonth = "0" + month;
            finalFormat = year + "-" + finalMonth + "-" + day + " " + hour + ":" + minute + ":" + second;
        }

        return finalFormat;
    }

    public static String convertToLocalTime(String timeToConvert) {
        SimpleDateFormat sourceFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        sourceFormat.setTimeZone(TimeZone.getTimeZone(Constants.SERVER_TIME_ZONE));//where server time zone is the time zone of your server as defauul,E.X -America/Los_Angeles
        Date parsed;
        try {
            parsed = sourceFormat.parse(timeToConvert);
        } catch (ParseException e) {
            e.printStackTrace();
            return "";
        }

        TimeZone tz = TimeZone.getDefault();
        SimpleDateFormat destFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        destFormat.setTimeZone(tz);

        String result = destFormat.format(parsed);
        return result;
    }

    public static String getTimeZone() {
        return TimeZone.getDefault().getID();
    }
}