3

我还没有找到一个简单的方法来解决这个问题。我见过很多不同的例子,有些实际上是相互冲突的,有些则使用过时的调用,我不确定为什么很难找到一个可靠的答案。

所以我有一个从 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();
}

...由于时差不准确,时区转换存在问题。任何帮助深表感谢。提前致谢。

4

1 回答 1

0

If you can get the timezone of the device consider sending epoch time from your web service such that epoch(not in millisecinds)+-(timezone diffrence in seconds) now you can calculate the difference epochlongvalue-(System.currentTimeMillis()/1000) you can convert this value to hh:mm:ss Convert seconds value to hours minutes seconds?

于 2014-08-25T06:48:41.083 回答