我还没有找到一个简单的方法。我见过很多不同的例子,其中一些实际上彼此冲突,另一些则使用不推荐的调用,我不知道为什么这么难以找到一个坚实的答案。Android:将2个不同的时区转换为UTC,并计算它们在天数,小时和分钟上的差异
所以我必须从Web服务与此格式返回时间戳:
"yyyy-MM-dd hh:mm:ss"
*的时间是在美国东部时间即使时区是不是他们的时间戳的一部分。
我想知道的是计算Web服务的时间戳(EST)与正在使用的手机的当前时间戳(可能在任何时区中)之间的时差的最佳方法。然后在剩余天数,剩余小时数和剩余分钟数上显示该差异。
目前我在做这样的事情:
public String getTimeLeft(String date) {
StringBuilder dateString = new StringBuilder();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
formatter.setTimeZone(TimeZone.getTimeZone("EST"));
Date dateObj = formatter.parse(date);
Time time = new Time(Time.getCurrentTimezone());
time.set(dateObj.getTime());
time.timezone = Time.TIMEZONE_UTC;
long timeInMill = time.normalize(true);
endCal.setTimeInMillis(timeInMill);
currCal.setTime(new Date());
long timeDiff = endCal.getTimeInMillis() - currCal.getTimeInMillis();
int days = (int) (timeDiff/(1000*60));
int hours = (int) ((timeDiff/(1000*60*60))%24);
int minutes = (int) ((timeDiff % (1000*60*60))/(1000*60));
dateString.append(days + (days == 1 ? " DAY " : " DAYS "));
dateString.append(hours + (hours == 1 ? " HOUR " : " HOURS "));
dateString.append(minutes + (minutes == 1 ? " MINUTE " : " MINUTES "));
return dateString.toString();
}
...和那里的东西随着时间的差异是不准确的是错误的时区转换。任何帮助深表感谢。提前致谢。
你能更具体地说明问题是什么吗? – Phil
问题是我的2个时间戳与不同时区之间的时差是不准确的。 – askilondz
我可以想到至少有一个问题,EST是复活节标准时间,当我们切换到夏令时时会发生什么情况,这会产生正确的时区EDT,可能会给您至少一个小时的时间。 : - /考虑到原帖的时间,这可能是一个相关的答案! –