如何在Android程序中添加时间段?

时间:2014-08-24 16:59:21

标签: java android

我正在为Android写一个应用程序,我需要在我的程序中添加“睡眠时间”。我不知道如何实现这一点。我的程序中有服务,必须在某些时间段(例如22:00 - 7:00)关闭服务。建议是否有针对此类问题的现成解决方案?我感兴趣的是如何设置这个时间段,谢谢。抱歉我的英文。

2 个答案:

答案 0 :(得分:0)

您可以尝试添加此项以获取当前日期和时间:

String str = DateFormat.getDateTimeInstance().format(new Date());

之后,您可以检查时间是否在您想要的范围内。

public static final String myformat = "HH:mm";

private Date date;
private Date time1;
private Date time2;

private String range1 = "10:00";
private String range2 = "07:00";

SimpleDateFormat str = new SimpleDateFormat(myformat, Locale.US);

private void checkRange(){
    Calendar now = Calendar.getInstance();

    int hour = now.get(Calendar.HOUR);
    int minute = now.get(Calendar.MINUTE);

    date = parseDate(hour + ":" + minute);
    time1= parseDate(range1);
    tim2= parseDate(range2);

    if ( time1.before( date ) && time2.after(date)) {
        //code
    }
}

答案 1 :(得分:0)

最终使用JodaTime编写以下函数:

SharedPreferences sp = context.getSharedPreferences(Constants.SP_SETTINGS,Context.MODE_PRIVATE);
    String start = sp.getString(Constants.PARAM_SLEEP_MODE_START,null);
    String end = sp.getString(Constants.PARAM_SLEEP_MODE_END,null);
    if (start==null || end ==null) return null;
    DateTime now = new DateTime(new Date());
    Days days = Days.daysBetween(new DateTime(new Date(0)).toLocalDate(),now.toLocalDate());
    DateTimeFormatter formatter = DateTimeFormat.forPattern("HH:mm");
    DateTime begin = formatter.parseDateTime(start).plusDays(days.getDays());
    DateTime finish = formatter.parseDateTime(end).plusDays(days.getDays());
    if (begin.isAfter(finish)) {
        if (now.isBefore(finish)) begin = begin.minusDays(1);
        else  finish = finish.plusDays(1);
    } else {
        if (now.isAfter(finish)) {
            begin = begin.plusDays(1);
            finish = finish.plusDays(1);
        }
    }
    Interval interval = new Interval(begin,finish);
    return interval.contains(now);

很好地定义了我想要的东西。谢谢大家=)