我得到了一个倒计时到特定日期的倒计时。每个刻度(间隔 1 秒)更新一个文本框,其中包含距离事件发生的天/小时/分钟。我的问题是分钟(还不知道天/小时)一直在闪烁。这意味着它在下降到 16 然后 17 然后 16 之前的一分钟内说 18 然后 17 然后 18 然后 17 并且它继续这样做。
闪烁的问题解决了,现在只是时区不起作用。(使用 Pshemo 的代码解决了闪烁问题)
此外 TimeZone 似乎没有工作。它显示2小时。尝试使用 SimpleTimeZone 更改它,但它不起作用,仍然显示 +2 小时(无论 SimpleTimeZone 上的设置如何)
可能是什么原因?
倒计时代码:
new CountDownTimer(remaining, 1000) {
TextView tv = (TextView)getActivity().findViewById(R.id.introTimeLeft);
public void onTick(long millisUntilFinished) {
SimpleTimeZone ts = new SimpleTimeZone(2, "Middle Europe");
Calendar cal = Calendar.getInstance(ts);
cal.set(2012, 5, 28, 17, 0);
long endTime = cal.getTimeInMillis();
long currentTime = System.currentTimeMillis();
long remaining = endTime - currentTime;
tv.setText(getDurationBreakdown(remaining));
}
...
}.start();
public String getDurationBreakdown(long millis)
{
if(millis < 0)
{
throw new IllegalArgumentException("Duration must be greater than zero!");
}
long days = TimeUnit.MILLISECONDS.toDays(millis);
millis -= TimeUnit.DAYS.toMillis(days);
long hours = TimeUnit.MILLISECONDS.toHours(millis);
millis -= TimeUnit.HOURS.toMillis(hours);
long minutes = (long) Math.ceil(TimeUnit.MILLISECONDS.toMinutes(millis));
StringBuilder sb = new StringBuilder(64);
sb.append(days);
sb.append(" Days ");
sb.append(hours);
sb.append(" Hours ");
sb.append(minutes);
sb.append(" Minutes");
return(sb.toString());
}