比如:上午:8:30 到 12:00 和 下午:14:30 到 18:30 为工作时间
写一个方法isWorkTime();
传入上面的4个参数,即:上午开始时间,上午结束时间,下午开始,下午结束时间,如果是工作时间返回0,不是工作时间返回1
      

解决方案 »

  1.   

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    public class DateCompare {

    private static SimpleDateFormat df = new SimpleDateFormat("hh:mm");
    private static String workTime[] = new String[]{"8:30","11:60","14:30","18:30"};
    private static Date workDate[] = new Date[4];
    static {
    try {
    workDate[0] = df.parse(workTime[0]);
    workDate[1] = df.parse(workTime[1]);
    workDate[2] = df.parse(workTime[2]);
    workDate[3] = df.parse(workTime[3]);
    } catch (ParseException e) {
    e.printStackTrace();
    }
    }
    public static void main(String[] args) {
    isWorkTime(workTime[0],workTime[1],workTime[2],workTime[3]);
    }

    public static int isWorkTime(String s,String s2,String s3,String s4) {

    //condition w0 <= s <= s2 <= w1, w2 <= s3 <= s4 <= w3
    try {
    Date date = df.parse(s);
    Date date2 = df.parse(s2);
    Date date3 = df.parse(s3);
    Date date4 = df.parse(s4);

    System.out.println(date.compareTo(date2)<=0);
    //check am
    if((workDate[0].compareTo(date) <=0) 
    && (date.compareTo(date2)<=0) 
    && (date2.compareTo(workDate[1])<=0)) {
    //check pm
    if((workDate[2].compareTo(date3)<=0) 
    && (date.compareTo(date4)<=0) 
    && (date4.compareTo(workDate[3])<=0)) {
    return 0;
    }
    }
    return 1;
    } catch (ParseException e) {
    e.printStackTrace();
    }
    return 1;
    }
    }
      

  2.   

    SimpleDateFormat sdf = new SimpleDateFormat(HHmm);
    long time = sdf.parse(sdf.format(new Date())).getTime();
    long time1 = sdf.parse(str1).getTime();
    long time2 = sdf.parse(str2).getTime();
    long time3 = sdf.parse(str3).getTime();
    long time4 = sdf.parse(str4).getTime();
    if(time>time1&&time<time2||time>time3&&time<time4)
      return 0;
    return 1;
      

  3.   

    HH:mm 打太快漏掉了,
    顺便说下这个格式根据你传的参数来确定
      

  4.   

    Calendar.after before结合使用不就可以么。你参数设计也有问题,上面4个时间应该是常量或者可配置的。
    方法应该是这样的
    boolean isWorkTime(); //不传参数则判断当前是否是工作时间
    boolean isWorkTime(Calendar cal);