判断时间是否在一个范围之内

全文全为网上资料

需求:当时间在凌晨0点至0点5分之间程序不执行。
也就是实现判断当前时间点是否在00:00:00至00:05:00之间

方法:

Java代码
  1. /** 
  2.  * 判断时间是否在时间段内 
  3.  *  
  4.  * @param date 
  5.  *            当前时间 yyyy-MM-dd HH:mm:ss 
  6.  * @param strDateBegin 
  7.  *            开始时间 00:00:00 
  8.  * @param strDateEnd 
  9.  *            结束时间 00:05:00 
  10.  * @return 
  11.  */  
  12. public static boolean isInDate(Date date, String strDateBegin,  
  13.         String strDateEnd) {  
  14.     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
  15.     String strDate = sdf.format(date);  
  16.     // 截取当前时间时分秒  
  17.     int strDateH = Integer.parseInt(strDate.substring(1113));  
  18.     int strDateM = Integer.parseInt(strDate.substring(1416));  
  19.     int strDateS = Integer.parseInt(strDate.substring(1719));  
  20.     // 截取开始时间时分秒  
  21.     int strDateBeginH = Integer.parseInt(strDateBegin.substring(02));  
  22.     int strDateBeginM = Integer.parseInt(strDateBegin.substring(35));  
  23.     int strDateBeginS = Integer.parseInt(strDateBegin.substring(68));  
  24.     // 截取结束时间时分秒  
  25.     int strDateEndH = Integer.parseInt(strDateEnd.substring(02));  
  26.     int strDateEndM = Integer.parseInt(strDateEnd.substring(35));  
  27.     int strDateEndS = Integer.parseInt(strDateEnd.substring(68));  
  28.     if ((strDateH >= strDateBeginH && strDateH <= strDateEndH)) {  
  29.         // 当前时间小时数在开始时间和结束时间小时数之间  
  30.         if (strDateH > strDateBeginH && strDateH < strDateEndH) {  
  31.             return true;  
  32.             // 当前时间小时数等于开始时间小时数,分钟数在开始和结束之间  
  33.         } else if (strDateH == strDateBeginH && strDateM >= strDateBeginM  
  34.                 && strDateM <= strDateEndM) {  
  35.             return true;  
  36.             // 当前时间小时数等于开始时间小时数,分钟数等于开始时间分钟数,秒数在开始和结束之间  
  37.         } else if (strDateH == strDateBeginH && strDateM == strDateBeginM  
  38.                 && strDateS >= strDateBeginS && strDateS <= strDateEndS) {  
  39.             return true;  
  40.         }  
  41.         // 当前时间小时数大等于开始时间小时数,等于结束时间小时数,分钟数小等于结束时间分钟数  
  42.         else if (strDateH >= strDateBeginH && strDateH == strDateEndH  
  43.                 && strDateM <= strDateEndM) {  
  44.             return true;  
  45.             // 当前时间小时数大等于开始时间小时数,等于结束时间小时数,分钟数等于结束时间分钟数,秒数小等于结束时间秒数  
  46.         } else if (strDateH >= strDateBeginH && strDateH == strDateEndH  
  47.                 && strDateM == strDateEndM && strDateS <= strDateEndS) {  
  48.             return true;  
  49.         } else {  
  50.             return false;  
  51.         }  
  52.     } else {  
  53.         return false;  
  54.     }  
  55. }  



判断某个时间是否是在条件时间的n天之内

正数表示在条件时间n天之后,负数表示在条件时间n天之前

  /**
     * 判断time是否在now的n天之内
     * @param time
     * @param now
     * @param n    正数表示在条件时间n天之后,负数表示在条件时间n天之前
     * @return
     */
    public static boolean belongDate(Date time, Date now, int n) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Calendar calendar = Calendar.getInstance();  //得到日历
        calendar.setTime(now);//把当前时间赋给日历
        calendar.add(Calendar.DAY_OF_MONTH, n);
        Date before7days = calendar.getTime();   //得到n前的时间
        if (before7days.getTime() < time.getTime()) {
            return true;
        } else {
            return false;
        }
    }
       //打印测试
        Date time  = stringToDate("2017-3-13");//string转为date
        Date now = new Date();//直接new对象,获取的是当前时间2017-3-16
        System.out.println(belongDate(time,now,-2));//2天前
        System.out.println(belongDate(time,now,2));//2天后
        System.out.println(belongDate(time,now,-7425

这里写图片描述

判断某个时间是否是在条件的起始时间与结束时间之内

/**
     * 判断time是否在from,to之内
     *
     * @param time 指定日期
     * @param from 开始日期
     * @param to   结束日期
     * @return
     */
    public static boolean belongCalendar(Date time, Date from, Date to) {
        Calendar date = Calendar.getInstance();
        date.setTime(time);

        Calendar after = Calendar.getInstance();
        after.setTime(from);

        Calendar before = Calendar.getInstance();
        before.setTime(to);

        if (date.after(after) && date.before(before)) {
            return true;
        } else {
            return false;
        }
    }
        //打印测试
        Date time1  = stringToDate("2017-3-11");
        Date time2 = stringToDate("2017-3-15");
        Date time3 = stringToDate("2017-3-17");
        Date from = stringToDate("2017-3-12");
        Date to= stringToDate("2017-3-16");
        System.out.println(belongCalendar(time1,from,to));
        System.out.println(belongCalendar(time2,from,to));
        System.out.println(belongCalendar(time3,from,31

这里写图片描述

判断给定时间与当前时间相差多少天

   public static long getDistanceDays(String date) {
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

        long days = 0;
        try {
            Date time = df.parse(date);//String转Date
            Date now = new Date();//获取当前时间
            long time1 = time.getTime();
            long time2 = now.getTime();
            long diff = time1 - time2;
            days = diff / (1000 * 60 * 60 * 24);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return days;//正数表示在当前时间之后,负数表

PS

以上方法涉及到的string转为date等时间日期转换问题。
欢迎查看我的以下两篇博客:
1。Java Calendar日历与Date日期的相互转:
http://blog.csdn.net/demonliuhui/article/details/62423646
2。 Java Date与String的相互转换:
http://blog.csdn.net/demonliuhui/article/details/62423158

归纳3

/**
     * 判断当前时间是否在[startTime, endTime]区间,注意时间格式要一致
     * 
     * @param nowTime 当前时间
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return
     */
    public static boolean isEffectiveDate(Date nowTime, Date startTime, Date endTime) {
        if (nowTime.getTime() == startTime.getTime()
                || nowTime.getTime() == endTime.getTime()) {
            return true;
        }


        Calendar date = Calendar.getInstance();
        date.setTime(nowTime);


        Calendar begin = Calendar.getInstance();
        begin.setTime(startTime);


        Calendar end = Calendar.getInstance();
        end.setTime(endTime);


        if (date.after(begin) && date.before(end)) {
            return true;
        } else {
            return false;
        }
    }
/**
* 判断时间是否在[startTime, endTime]区间,注意时间格式要一致
* @param nowTime
* @param startTime
* @param endTime
* @return
*/
    public static boolean isEffectiveDate(String nowTime, String startTime, String endTime,String dateFormat) {
    DateFormat df = new SimpleDateFormat(dateFormat);
   
    Date nowDate = null;
Date startDate = null;
Date endDate = null;
try {
nowDate = df.parse(nowTime);
startDate = df.parse(startTime);
endDate = df.parse(endTime);
} catch (ParseException e) {
e.printStackTrace();
}
   
        if (nowDate.getTime() == startDate.getTime()
                || nowDate.getTime() == endDate.getTime()) {
            return true;
        }


        Calendar date = Calendar.getInstance();
        date.setTime(nowDate);


        Calendar begin = Calendar.getInstance();
        begin.setTime(startDate);


        Calendar end = Calendar.getInstance();
        end.setTime(endDate);


        if (date.after(begin) && date.before(end)) {
            return true;
        } else {
            return false;
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值