我想制作一个小型警报应用程序。我想计算系统时间(当前)和时间从TimePicker
(由用户选择)之间的时间差。我找不到一些好的解决方案。这是我的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alarm_list);
timePicker = (TimePicker) findViewById(R.id.timePicker1);
timePicker.setIs24HourView(true);
b = (Button) findViewById(R.id.button1);
c = Calendar.getInstance();
timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker arg0, int hours, int minutes) {
c.set(Calendar.HOUR_OF_DAY, hours);
c.set(Calendar.MINUTE, minutes);
chosenTimeMills = c.getTimeInMillis();
}
});
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Date currentDate = new Date(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY,currentDate.getHours());
c.set(Calendar.MINUTE, currentDate.getMinutes());
systemTimeMills = c.getTimeInMillis();
long difference =systemTimeMills-chosenTimeMills;
Date date = new Date(difference);
Log.d("TAGG", "Difference is: "+date.getHours()+" Hours and "+date.getMinutes()+" minutes");
}
});
}
我很乐意得到答案。谢谢,奥斯曼!!!
答案 0 :(得分:3)
试试这个
Calendar c2 = Calendar.getInstance();
c2.set(Calendar.HOUR_OF_DAY, 22);
c2.set(Calendar.MINUTE, 30);
long sub = c2.getTimeInMillis() - c.getTimeInMillis();
此处c
是您已创建的Calender
个实例,c2
将为当前date time
实例。
修改强>
在onClick
中,您可以尝试
Calendar cal = Calendar.getInstance();
long diff = c.getTimeInMillis() - cal.getTimeInMillis();
long diffInSec = TimeUnit.MILLISECONDS.toSeconds(diff);
int hour = (int) (diffInSec / (60 * 60));
int minremaining = (int) (diffInSec % (60 * 60));
int min = (int) (minremaining / (60));
int secondsRemaining = (int) (minremaining % (60));
Log.e("TAG", "Difference in milliss calendar " + diff);
Log.e("TAG", "hour " + hour);
Log.e("TAG", "min " + min);
Log.e("TAG", "sec " + secondsRemaining);
其中c
是Calendar
个实例的值,在onTimeChanged
变量hour
,min
和secondsRemaining
将为您提供剩余的时间。
答案 1 :(得分:2)
您的主要问题是当您使用TimePicker
时,您只能访问小时和分钟。
我想要你想要的区别,currentSystemTime和TodayTime + Hour and Minute。
例如: 如果用户在10:00(当前时间)选择20:35,则应该 10:35 。正确的吗?
所以这是我的解决方案(这里的完整示例:Github full example):
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
pickedHour = hourOfDay;
pickedMinute = minute;
}
public void onClickListenerOfYourBUtton(View view)
{
long currentTime = System.currentTimeMillis();
long diffTime = 0;
calendar = Calendar.getInstance();
sysCurrent.setText(currentTime +"");
calendar.setTimeInMillis(currentTime);//set to currentTime to know the current day
calendar.set(Calendar.HOUR_OF_DAY, pickedHour);
calendar.set(Calendar.MINUTE, pickedMinute);
diffTime = calendar.getTimeInMillis()- currentTime; // Here, i get the difference in hours, minutes, ...for the same day
difference.setText(String.format("%02d:%02d",
diffTime/hoursInMilis,
(diffTime%hoursInMilis)/minutesInMilis)); //Formating string
}
答案 2 :(得分:1)