仅在开始和结束时间之间运行代码

时间:2014-07-20 17:14:55

标签: android

我希望能够设置我的服务执行某些代码的时间。它定期通过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显示给用户,以及使用设置的时间作为运行代码的点。

  1. 如何格式化用户输入的时间(即10:00)以与当前时间进行比较?
  2. 如何比较格式正确的时间?
  3. 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我使用的解决方案是使用TimePickerDialoghourOfDayminute中的整数。

由于它们是整数,因此很容易将它们与当前时间的其他小时和分钟整数进行比较:

Calendar calendar = Calendar.getInstance();
calendar.setTime(New Date());
int hour = calender.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);

在我看来,这是处理时代的最简单方法。