首页 > 解决方案 > 替代 LocalTime 检查时间是否在两次之间的范围内

问题描述

我有一个代码只支持 android 中的 API Level >= 26:

public static String in = "7:00:00";
public static String in_until = "11:50:00";
public static String breakout_out = "11:51:00";
public static String breakout_out_until = "12:50:00";
public static String breakout_in = "12:51:00";
public static String breakout_in_until = "13:10:00";
public static String out = "16:50";

public static String getCurrentTimeLogType() {
    // LocalTime target = LocalTime.parse( DataHandler.timestamp().split(" ")[1] ) ;
    LocalTime target = LocalTime.parse("7:30:00") ;
    if (target.isBefore(in) || (target.isAfter(in) && target.isBefore(in_until)))
        return "TIME-IN";
    else if (target.isAfter(breakout_out) && target.isBefore(breakout_out_until))
        return "BREAK-OUT";
    else if (target.isAfter(breakout_in) && target.isBefore(breakout_in_until))
        return "BREAK IN";
    else  if (target.isAfter(out))
        return "TIME-OUT";

    return "UNKNOWN!";
}

如果变量中的指定时间在当前时间之内,我想返回以返回要添加到数据库的时间戳类型。

例如,如果今天是下午 12:05:

if (12:05 >= breakout_out && 12:05 <= breakout_out_until)
    return "BREAK-OUT"

我想实现这样的目标。如何在不使用不受支持的 LocalTime 模块的情况下实现这样的代码?

标签: javaandroid

解决方案


像下面这样的东西呢。虽然没有测试。

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Date breakout_out = sdf.parse("11:51:00");
Date breakout_out_until = sdf.parse("13:10:00");
Date current_time = sdf.parse("12.05.00");

if(current_time.before(breakout_out_until) && current_time.after(breakout_out)) {
    return "BREAK-OUT"
}

推荐阅读