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();
}

…时区转换有问题,因为时差不准确。非常感谢任何帮助。提前感谢。

如果您可以获得设备的时区,请考虑从您的web服务发送epoch时间,以便epoch(不是毫秒)+-(以秒为单位的时区差异)现在您可以计算差异epochlongvalue-(System.currentTimeMillis()/1000)可以将此值转换为hh:mm:ss将秒值转换为小时分钟秒?

相关内容

  • 没有找到相关文章

最新更新