我希望能够设置我的服务执行某些代码的时间。它定期通过AlarmManager运行,当它运行时,我希望它只在时间介于窗口之间时执行一些代码,比如说在上午10点到下午2点(或10点和14点)之间。
我创建的TimePickerDialog
是从OnClick
两个Buttons
开始,"开始时间"和#34;结束时间"。看看"开始时间"例如,代码如下:
TimePickerDialog代码:
public void showTimePickerDialog(View v) {
Calendar dateTimeStart = Calendar.getInstance();
new TimePickerDialog(this, t, dateTimeStart.get(Calendar.HOUR_OF_DAY), dateTimeStart.get(Calendar.MINUTE), DateFormat.is24HourFormat(this)).show();
}
TimePickerDialog.OnTimeSetListener t = new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
startTime = new Time();
startTime.hour = hourOfDay;
startTime.minute = minute;
startButton.setText(new StringBuilder().append(startTime));
}
setText
方法可让我查看我正在使用的数据类型 - 它是Time
格式,其输出类似19700101T100000America/Toronto(0,0,,-1,54000)
我一直在使用Calendar
类而不是Time
类,而且它更强大。
所以我知道它会在T
之后设置时间,但是我无法让人类可读10:00
显示给用户,以及使用设置的时间作为运行代码的点。
感谢您的帮助。
答案 0 :(得分:0)
我使用的解决方案是使用TimePickerDialog
,hourOfDay
和minute
中的整数。
由于它们是整数,因此很容易将它们与当前时间的其他小时和分钟整数进行比较:
Calendar calendar = Calendar.getInstance();
calendar.setTime(New Date());
int hour = calender.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
在我看来,这是处理时代的最简单方法。