【发布时间】:2021-07-09 10:03:39
【问题描述】:
我想要一个进度条来显示给定日期之间的剩余时间。 我已经在我的应用程序上放置了一个计时器,它每秒刷新一次,并给出两个给定日期之间的时差。
这是计算以下日期之间时间的代码:
public String printDifference(Date startDate, Date endDate) {
//milliseconds
long different = endDate.getTime() - startDate.getTime();
System.out.println("startDate : " + startDate);
System.out.println("endDate : "+ endDate);
System.out.println("different : " + different);
long secondsInMilli = 1000;
long minutesInMilli = secondsInMilli * 60;
long hoursInMilli = minutesInMilli * 60;
long daysInMilli = hoursInMilli * 24;
long elapsedDays = different / daysInMilli;
different = different % daysInMilli;
long elapsedHours = different / hoursInMilli;
String hour = String.valueOf(elapsedHours);
different = different % hoursInMilli;
long elapsedMinutes = different / minutesInMilli;
String mins = String.valueOf(elapsedMinutes);
different = different % minutesInMilli;
long elapsedSeconds = different / secondsInMilli;
String sec = String.valueOf(elapsedSeconds);
if(Integer.parseInt(hour)<10){
hour = "0"+hour;
}
if(Integer.parseInt(mins)<10){
mins = "0"+mins;
}
if(Integer.parseInt(sec)<10){
sec = "0"+sec;
}
return hour + ":" + mins + ":" + sec;
}
这是更新显示的代码,看起来像倒计时:
private void updateDisplay() {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Date curr = Calendar.getInstance().getTime();
Calendar tmr = Calendar.getInstance();
tmr.add(Calendar.DAY_OF_MONTH, 1);
Date tmrTime = tmr.getTime();
SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy, hh:mm:ss aa", Locale.getDefault());
SimpleDateFormat df2 = new SimpleDateFormat("dd.MM.yyyy", Locale.getDefault());
String currentDate = df.format(curr);
String shewanDate = df2.format(curr)+", "+shewan+":00 pm";
String bayaniDate = df2.format(curr)+", "+bayani+":00 am";
String bayaniDateTmr = df2.format(tmrTime)+", "+bayani+":00 am";
Date currentD = new Date(), shewanD = new Date(), bayaniD = new Date(), bayaniTmrD = new Date();
try {
currentD = df.parse(currentDate);
shewanD = df.parse(shewanDate);
bayaniD = df.parse(bayaniDate);
bayaniTmrD = df.parse(bayaniDateTmr);
} catch (ParseException e) {
e.printStackTrace();
}
try {
currentD = df.parse(currentDate);
bayaniTmrD = df.parse(bayaniDateTmr);
time.setText(printDifference(currentD, bayaniTmrD));
} catch (ParseException e) {
e.printStackTrace();
}
},0,1000);//Update text every second
}
如何制作水平进度条以显示两个日期之间的剩余时间。提前致谢。
【问题讨论】:
-
只要计算dateA和dateB的差值,放在0-100范围内
-
@GabrieleMariotti 我还很年轻,所以我有点困惑。我有很长的“不同”,它带走了并给了我一个很长的数字,我接受它,然后我必须在
updateDisplay()中跟踪它并从那里取得进展?
标签: android android-studio progress-bar android-progressbar