Android 如何获取时间选择器和系统时间之间的时间差
我想做一个小闹钟应用程序。我想计算系统时间(当前)和时间选择器时间(由用户选择)之间的时间差。我找不到好的解决办法。这是我的密码Android 如何获取时间选择器和系统时间之间的时间差,android,Android,我想做一个小闹钟应用程序。我想计算系统时间(当前)和时间选择器时间(由用户选择)之间的时间差。我找不到好的解决办法。这是我的密码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alarm_list); timePicker = (TimePicker) fi
@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
是您创建的日历
实例,c2
将为当前日期时间
创建一个实例
编辑 在
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
将为您提供剩余的时间。您的主要问题是,当您使用计时器时,您只能访问小时和分钟。
我猜你想要的是时差,currentSystemTime和TodayTime+小时和分钟
例如:
如果用户在10:00(当前时间)选择20:35,则应获得10:35。对吗
下面是我的解决方案(完整示例:):
我的系统时间是12小时格式,选择的时间是24小时,这会不会给我带来麻烦?不会,都是像123456789这样的数字。它是以毫秒为单位的总时间。
@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
}