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