如何将TimePickerDialog
值传递给countDown计时器?
这是我的倒数计时器代码:
public class MyCountDown extends CountDownTimer {
public MyCountDown(long millisInFuture, long countDownInterval) {
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish() {
}
@Override
public void onTick(long millisUntilFinished) {
long sec = millisUntilFinished/1000;
String t = String.format("%02d:%02d:%02d", sec / 3600,(sec % 3600) / 60, (sec % 60));
t1.setText("Remaining time:---"+t);
}
}
我的时间选择器输出是下午3:23。我如何将这段时间传递给倒数计时器?请帮助我,提前谢谢。
答案 0 :(得分:0)
就像您在评论中所描述的那样,您尝试parse
这样的日期:
String dt_time = "4/9/2016"+" "+"3:17 PM";
这样的SimpleDateFormat
:
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
所以你得到一个例外。要解析date
,例如您的约会String
,您需要SimpleDateFormat
"d/M/yyyy h:mm a"
或者您必须将日期字符串更改为:
"04/09/2016"+" "+"03:17 PM";
您在字符串中使用一个编号格式的日期,月份和小时,但尝试使用双编号格式parse
。我注意到来自SimpleDateFormat
的API更改了说明。意思是一样的,但我认为旧的API描述更好理解。看这里:SimpleDateFormat
您的代码应该是这样的:
String dt_time = "4/9/2016"+" "+"3:17 PM";
SimpleDateFormat format = new SimpleDateFormat("d/M/yyyy h:mm a");
Date date = format.parse(dt_time);
long millis = date.getTime();
MyCountDown mMyCountDown = new MyCountDown(millis,1000);
mMyCountDown.start();
现在又做了另一个假设:用户选择将来的某个时间,假设是下午5:00,现在是下午4:00。然后你必须得到当前时间:
Calendar cal = Calendar.getInstance();
long currentMillis = cal.getTimeInMillis();
然后你在上面的例子中得到了你的时间戳的毫秒数。这些都是将来的。那么你需要从这些毫秒中减去当前时间:
long millisToCount = millis - currentMillis;
然后将其传递给计时器:
MyCountDown mMyCountDown = new MyCountDown(millisToCount,1000);
mMyCountDown.start();
然后计时器应倒计时,直到所选时间到来。这就是你想要的吗?