如何将TimePickerDialog值传递给android中的倒数计时器

时间:2016-10-04 10:43:14

标签: android countdowntimer android-timepicker

如何将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。我如何将这段时间传递给倒数计时器?请帮助我,提前谢谢。

1 个答案:

答案 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();

编辑2

现在又做了另一个假设:用户选择将来的某个时间,假设是下午5:00,现在是下午4:00。然后你必须得到当前时间:

Calendar cal = Calendar.getInstance();
long currentMillis = cal.getTimeInMillis();

然后你在上面的例子中得到了你的时间戳的毫秒数。这些都是将来的。那么你需要从这些毫秒中减去当前时间:

long millisToCount = millis - currentMillis;

然后将其传递给计时器:

 MyCountDown mMyCountDown = new MyCountDown(millisToCount,1000);
 mMyCountDown.start();

然后计时器应倒计时,直到所选时间到来。这就是你想要的吗?