如何将TimePickerDialog值传递给android中的倒计时计时器
如何将如何将TimePickerDialog值传递给android中的倒计时计时器,android,countdowntimer,android-timepicker,Android,Countdowntimer,Android Timepicker,如何将TimePickerDialog值传递给倒计时计时器? 这是我的倒计时代码: public class MyCountDown extends CountDownTimer { public MyCountDown(long millisInFuture, long countDownInterval) { super(millisInFuture, countDownInterval); } @Override public void
TimePickerDialog
值传递给倒计时计时器?
这是我的倒计时代码:
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。我怎样才能把这个时间传给倒计时呢?请帮助我,提前谢谢。就像您在评论中描述的那样,您尝试
解析这样的日期:
String dt_time = "4/9/2016"+" "+"3:17 PM";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
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();
使用如下的SimpleDataFormat
:
String dt_time = "4/9/2016"+" "+"3:17 PM";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
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();
所以你得到了一个例外。要解析日期
如日期字符串,您需要这个SimpleDataFormat
"d/M/yyyy h:mm a"
或者您必须将日期字符串更改为:
"04/09/2016"+" "+"03:17 PM";
字符串中的日、月和小时使用的是单号格式,但尝试用双号格式解析它。我注意到来自SimpleDateFormat
的API改变了描述。意思是一样的,但我认为旧的API描述更容易理解。看这里:
编辑
您的代码应该是这样的:
String dt_time = "4/9/2016"+" "+"3:17 PM";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
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点,现在是下午4点。然后您必须获得当前时间,如:
Calendar cal = Calendar.getInstance();
long currentMillis = cal.getTimeInMillis();
在我上面的例子中,你可以从你的计时器中得到毫秒。这些都是在未来。然后需要从这些毫秒中减去当前时间:
long millisToCount = millis - currentMillis;
然后将其传递给计时器:
MyCountDown mMyCountDown = new MyCountDown(millisToCount,1000);
mMyCountDown.start();
然后计时器应倒计时,直到选定的时间到来。这就是你想要的吗?就像你在评论中所描述的那样,你尝试
解析这样一个日期:
String dt_time = "4/9/2016"+" "+"3:17 PM";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
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();
使用如下的SimpleDataFormat
:
String dt_time = "4/9/2016"+" "+"3:17 PM";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
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();
所以你得到了一个例外。要解析日期
如日期字符串,您需要这个SimpleDataFormat
"d/M/yyyy h:mm a"
或者您必须将日期字符串更改为:
"04/09/2016"+" "+"03:17 PM";
字符串中的日、月和小时使用的是单号格式,但尝试用双号格式解析它。我注意到来自SimpleDateFormat
的API改变了描述。意思是一样的,但我认为旧的API描述更容易理解。看这里:
编辑
您的代码应该是这样的:
String dt_time = "4/9/2016"+" "+"3:17 PM";
SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy hh:mm a");
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点,现在是下午4点。然后您必须获得当前时间,如:
Calendar cal = Calendar.getInstance();
long currentMillis = cal.getTimeInMillis();
在我上面的例子中,你可以从你的计时器中得到毫秒。这些都是在未来。然后需要从这些毫秒中减去当前时间:
long millisToCount = millis - currentMillis;
然后将其传递给计时器:
MyCountDown mMyCountDown = new MyCountDown(millisToCount,1000);
mMyCountDown.start();
然后计时器应倒计时,直到选定的时间到来。这就是您想要的吗?我也尝试将时间转换为毫秒,但输出不正确。请说明您是如何将其解析为毫秒的。..String dt_time=“4/9/2016”+“”+“3:17 PM”;SimpleDataFormat=新的SimpleDataFormat(“dd/MM/yyyy hh:MM a”);请尝试{Date-Date=format.parse(dt_-time);毫秒=Date.getTime();}catch(异常e){}我还尝试将时间转换为毫秒,但输出不正确。请显示您是如何将其解析为毫秒的。String dt_time=“4/9/2016”+“+”3:17 PM”;SimpleDataFormat=新的SimpleDataFormat(“dd/MM/yyyy hh:MM a”);请尝试{Date-Date=format.parse(dt_-time);millizes=Date.getTime();}捕获(异常e){}抱歉,我无法理解。您能帮助我如何实现它吗?对不起,输出不正确。请更清楚…您到底想解析什么?绳子怎么样?这只是
“3:23 PM”
还是像你的问题“4/9/2016”+“+”+“3:17 PM”
?看,我让计时器用户从中选择时间,然后将该时间传递到倒计时计时器以创建倒计时这是我的全部任务。现在我想你明白我想做什么了。那问题是什么?我的例子说明了你必须做什么。我想你在这里必须更清楚,我不明白你的意思。只是一个假设:您是否希望从计时器选择器获得一些时间,让倒计时计时器计时?假设时间选择器是3小时40分钟,那么你想倒计时3小时40分钟吗?那么你走错了路,这与日期和下午无关。对不起,我不能理解。您能帮助我如何实现它吗?对不起,输出不正确。请更清楚…您到底想解析什么?绳子怎么样?这只是“3:23 PM”
还是像你的问题“4/9/2016”+“+”+“3:17 PM”
?看,我让计时器用户从中选择时间,然后将该时间传递到倒计时计时器以创建倒计时这是我的全部任务。现在我想你明白我想做什么了。那问题是什么?我的例子说明了你必须做什么。我想你在这里必须更清楚,我不明白你的意思。只是一个假设:您是否希望从计时器选择器获得一些时间,让倒计时计时器计时?假设时间选择器是3小时40分钟,那么你想倒计时3小时40分钟吗?那你就走错了路,这跟日期和下午没关系。。。。