我想做一个小闹钟应用。我想计算系统时间(当前)和来自 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");
}
});
}
我很想知道答案。谢谢,乌斯曼!!!
最佳答案
试试这个
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
将为您提供剩余时间。
关于android - 如何获取timePicker和System Time的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16300064/