时间工具类

//===========================DateUtils=============================================
public class DateUtils {
      public static Date date = null;
   
      public static DateFormat dateFormat = null;
      /**
       * 功能描述:格式化输出日期
       * 
       * @param date
       *            Date 日期
       * @param format
       *            String 格式
       * @return 返回字符型日期
       */
      public static String format(Date date, String format) {
         String result = "";
         try {
            if (date != null) {
               dateFormat = new SimpleDateFormat(format);
               result = dateFormat.format(date);
            }
         } catch (Exception e) {
         }
         return result;
      }

      public static Date  dateToDay(Date date,String format){
         Date retDate =null;
         try {
            if(date !=null){
               SimpleDateFormat dateFormat = new SimpleDateFormat(format);
               String result = dateFormat.format(date);
               retDate=dateFormat.parse(result);
            }
         } catch (ParseException e) {

         }
         return retDate;
      }

      /**
       *  将字符串转化为时间
       * @param date
       * @param fromat
       * @return
       * @throws ParseException
       */
      public static Date strParseDate(String date ,String fromat) throws ParseException {
         Date retDate = new SimpleDateFormat(fromat).parse(date);
         return retDate;
      }

      /**
       * 功能描述:返回字符型日期时间
       * @author chenhui
       * @param date
       *            Date 日期
       * @return 返回字符型日期时间  格式自定义
       */
      public static String getOneDateTime(Date date,String mode) {
         return format(date, mode);
      }
      
       //获取当天的开始时间
       public static Date getDayBegin() {
          Calendar cal = new GregorianCalendar();
           cal.set(Calendar.HOUR_OF_DAY, 0);
           cal.set(Calendar.MINUTE, 0);
           cal.set(Calendar.SECOND, 0);
           cal.set(Calendar.MILLISECOND, 0);
           return cal.getTime();
       }
       //获取当天的结束时间
       public static Date getDayEnd() {
           Calendar cal = new GregorianCalendar();
           cal.set(Calendar.HOUR_OF_DAY, 23);
           cal.set(Calendar.MINUTE, 59);
           cal.set(Calendar.SECOND, 59);
           return cal.getTime();
       }
       //获取昨天的开始时间
       public static Date getBeginDayOfYesterday() {
           Calendar cal = new GregorianCalendar();
           cal.setTime(getDayBegin());
           cal.add(Calendar.DAY_OF_MONTH, -1);
           return cal.getTime();
       }
       //获取昨天的结束时间
       public static Date getEndDayOfYesterDay() {
           Calendar cal = new GregorianCalendar();
           cal.setTime(getDayEnd());
           cal.add(Calendar.DAY_OF_MONTH, -1);
           return cal.getTime();
       }
       //获取明天的开始时间
       public static Date getBeginDayOfTomorrow() {
           Calendar cal = new GregorianCalendar();
           cal.setTime(getDayBegin());
           cal.add(Calendar.DAY_OF_MONTH, 1);

           return cal.getTime();
       }
       //获取明天的结束时间
       public static Date getEndDayOfTomorrow() {
           Calendar cal = new GregorianCalendar();
           cal.setTime(getDayEnd());
           cal.add(Calendar.DAY_OF_MONTH, 1);
           return cal.getTime();
       }
       //获取本周的开始时间
       public static Date getBeginDayOfWeek() {
           Date date = new Date();
           if (date == null) {
               return null;
           }
           Calendar cal = Calendar.getInstance();
           cal.setTime(date);
           int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
           if (dayofweek == 1) {
               dayofweek += 7;
           }
           cal.add(Calendar.DATE, 2 - dayofweek);
           return getDayStartTime(cal.getTime());
       }
       //获取本周的结束时间
       public static Date getEndDayOfWeek(){
           Calendar cal = Calendar.getInstance();
           cal.setTime(getBeginDayOfWeek());  
           cal.add(Calendar.DAY_OF_WEEK, 6); 
           Date weekEndSta = cal.getTime();
           return getDayEndTime(weekEndSta);
       }
       //获取本月的开始时间
        public static Date getBeginDayOfMonth() {
               Calendar calendar = Calendar.getInstance();
               calendar.set(getNowYear(), getNowMonth() - 1, 1);
               return getDayStartTime(calendar.getTime());
           }
       //获取本月的结束时间
        public static Date getEndDayOfMonth() {
               Calendar calendar = Calendar.getInstance();
               calendar.set(getNowYear(), getNowMonth() - 1, 1);
               int day = calendar.getActualMaximum(5);
               calendar.set(getNowYear(), getNowMonth() - 1, day);
               return getDayEndTime(calendar.getTime());
           }
        //获取本年的开始时间
        public static Date getBeginDayOfYear() {
               Calendar cal = Calendar.getInstance();
               cal.set(Calendar.YEAR, getNowYear());
               // cal.set
               cal.set(Calendar.MONTH, Calendar.JANUARY);
               cal.set(Calendar.DATE, 1);

               return getDayStartTime(cal.getTime());
           }
        //获取本年的结束时间
        public static Date getEndDayOfYear() {
               Calendar cal = Calendar.getInstance();
               cal.set(Calendar.YEAR, getNowYear());
               cal.set(Calendar.MONTH, Calendar.DECEMBER);
               cal.set(Calendar.DATE, 31);
               return getDayEndTime(cal.getTime());
           }
       //获取某个日期的开始时间
       public static Timestamp getDayStartTime(Date d) {
           Calendar calendar = Calendar.getInstance();
           if(null != d) calendar.setTime(d);
           calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),    calendar.get(Calendar.DAY_OF_MONTH), 0, 0, 0);
           calendar.set(Calendar.MILLISECOND, 0);
           return new Timestamp(calendar.getTimeInMillis());
       }
       //获取某个日期的结束时间
       public static Timestamp getDayEndTime(Date d) {
           Calendar calendar = Calendar.getInstance();
           if(null != d) calendar.setTime(d);
           calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),    calendar.get(Calendar.DAY_OF_MONTH), 23, 59, 59);
           calendar.set(Calendar.MILLISECOND, 999);
           return new Timestamp(calendar.getTimeInMillis());
       }
       //获取今年是哪一年
        public static Integer getNowYear() {
                Date date = new Date();
               GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
               gc.setTime(date);
               return Integer.valueOf(gc.get(1));
           }
        //获取本月是哪一月
        public static int getNowMonth() {
                Date date = new Date();
               GregorianCalendar gc = (GregorianCalendar) Calendar.getInstance();
               gc.setTime(date);
               return gc.get(2) + 1;
           }
        //两个日期相减得到的天数
        public static int getDiffDays(Date beginDate, Date endDate) {

               if (beginDate == null || endDate == null) {
                   throw new IllegalArgumentException("getDiffDays param is null!");
               }

               long diff = (endDate.getTime() - beginDate.getTime())
                       / (1000 * 60 * 60 * 24);

               int days = new Long(diff).intValue();

               return days;
      }
       //两个日期相减得到的毫秒数
        public static long dateDiff(Date beginDate, Date endDate) {
               long date1ms = beginDate.getTime();
               long date2ms = endDate.getTime();
               return date2ms - date1ms;
           }
        //获取两个日期中的最大日期
        public static Date max(Date beginDate, Date endDate) {
               if (beginDate == null) {
                   return endDate;
               }
               if (endDate == null) {
                   return beginDate;
               }
               if (beginDate.after(endDate)) {
                   return beginDate;
               }
               return endDate;
           }
        //获取两个日期中的最小日期
        public static Date min(Date beginDate, Date endDate) {
               if (beginDate == null) {
                   return endDate;
               }
               if (endDate == null) {
                   return beginDate;
               }
               if (beginDate.after(endDate)) {
                   return endDate;
               }
               return beginDate;
      }
        //返回某月该季度的第一个月
        public static Date getFirstSeasonDate(Date date) {
                final int[] SEASON = { 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4 };
               Calendar cal = Calendar.getInstance();
               cal.setTime(date);
               int sean = SEASON[cal.get(Calendar.MONTH)];
               cal.set(Calendar.MONTH, sean * 3 - 3);
               return cal.getTime();
           }
        //返回某个日期下几天的日期
        public static Date getNextDay(Date date, int i) {
               Calendar cal = new GregorianCalendar();
               cal.setTime(date);
               cal.set(Calendar.DATE, cal.get(Calendar.DATE) + i);
               return cal.getTime();
           }
        //返回某个日期前几天的日期
        public static Date getFrontDay(Date date, int i) {
               Calendar cal = new GregorianCalendar();
               cal.setTime(date);
               cal.set(Calendar.DATE, cal.get(Calendar.DATE) - i);
               return cal.getTime();
           }
        //获取某年某月到某年某月按天的切片日期集合(间隔天数的集合)
        public static List getTimeList(int beginYear, int beginMonth, int endYear,
                   int endMonth, int k) {
               List list = new ArrayList();
               if (beginYear == endYear) {
                   for (int j = beginMonth; j <= endMonth; j++) {
                       list.add(getTimeList(beginYear, j, k));

                   }
               } else {
                   {
                       for (int j = beginMonth; j < 12; j++) {
                           list.add(getTimeList(beginYear, j, k));
                       }

                       for (int i = beginYear + 1; i < endYear; i++) {
                           for (int j = 0; j < 12; j++) {
                               list.add(getTimeList(i, j, k));
                           }
                       }
                       for (int j = 0; j <= endMonth; j++) {
                           list.add(getTimeList(endYear, j, k));
                       }
                   }
               }
               return list;
           }
        //获取某年某月按天切片日期集合(某个月间隔多少天的日期集合)
        public static List getTimeList(int beginYear, int beginMonth, int k) {
               List list = new ArrayList();
               Calendar begincal = new GregorianCalendar(beginYear, beginMonth, 1);
               int max = begincal.getActualMaximum(Calendar.DATE);
               for (int i = 1; i < max; i = i + k) {
                   list.add(begincal.getTime());
                   begincal.add(Calendar.DATE, k);
               }
               begincal = new GregorianCalendar(beginYear, beginMonth, max);
               list.add(begincal.getTime());
               return list;
           }

   /**
    * 得到几天前的时间
    *
    * @param d
    * @param day
    * @return
    */
   public static Date getDateBefore(Date d, int day) {
      Calendar now = Calendar.getInstance();
      now.setTime(d);
      now.set(Calendar.DATE, now.get(Calendar.DATE) - day);
      return now.getTime();
   }

   /**
    * 得到几天后的时间
    *
    * @param d
    * @param day
    * @return
    */
   public static Date getDateAfter(Date d, int day) {
      Calendar now = Calendar.getInstance();
      now.setTime(d);
      now.set(Calendar.DATE, now.get(Calendar.DATE) + day);
      return now.getTime();
   }

   //判断选择的日期是否是本周
   public static boolean isThisWeek(long time)
   {
      Calendar calendar = Calendar.getInstance();
      int currentWeek = calendar.get(Calendar.WEEK_OF_YEAR);
      calendar.setTime(new Date(time));
      int paramWeek = calendar.get(Calendar.WEEK_OF_YEAR);
      if(paramWeek==currentWeek){
         return true;
      }
      return false;
   }

   //判断选择的日期是否是今天
   public static boolean isToday(long time)
   {
      return isThisTime(time,"yyyy-MM-dd");
   }

   //判断选择的日期是否是本月
   public static boolean isThisMonth(long time)
   {
      return isThisTime(time,"yyyy-MM");
   }

   private static boolean isThisTime(long time,String pattern) {
      Date date = new Date(time);
      SimpleDateFormat sdf = new SimpleDateFormat(pattern);
      String param = sdf.format(date);//参数时间
      String now = sdf.format(new Date());//当前时间
      if(param.equals(now)){
         return true;
      }
      return false;
   }

   //判断当前时间是否在时间段内
   public static boolean isTimeSlot(Date now,Integer startTime,Integer endTime)
   {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(now);
      Integer nowHour = calendar.get(Calendar.HOUR_OF_DAY);
      if (nowHour >= startTime && nowHour <= endTime){
         return true;
      } else {
         return false;
      }
   }
}

//===========================DateTimeTool=============================================

public class DateTimeTool {
    /**
     * createTime:2017/2/28
     * Description:取北京时间
     * @param str:时间格式
     * @return 时间
     */
    public static String getBeijingTime(String str){
        return getFormatedDateString(8,str);
    }

    /**
     * createTime:2017/2/28
     * timeZoneOffset表示时区,如中国一般使用东八区,因此timeZoneOffset就是8
     * @param timeZoneOffset:时区  str:时间格式
     * @return
     */
    public static String getFormatedDateString(float timeZoneOffset,String str){
        if (timeZoneOffset > 13 || timeZoneOffset < -12) {
            timeZoneOffset = 0;
        }

        int newTime=(int)(timeZoneOffset * 60 * 60 * 1000);
        TimeZone timeZone;
        String[] ids = TimeZone.getAvailableIDs(newTime);
        if (ids.length == 0) {
            timeZone = TimeZone.getDefault();
        } else {
            timeZone = new SimpleTimeZone(newTime, ids[0]);
        }
        SimpleDateFormat sdf = new SimpleDateFormat(str);
        sdf.setTimeZone(timeZone);
        return sdf.format(new Date());
    }

   /**
       createTime:2017/2/28
       获取当前时间的前后几天
       @param number:几天 str :时间格式
       @return String
    */
   public static String getDateByNumber(int number,String str) throws ParseException {
       Calendar calendar = Calendar.getInstance();
       String date1 = getBeijingTime(str);
       SimpleDateFormat sdf = new SimpleDateFormat(str);
       Date date = sdf.parse(date1);
       calendar.setTime(date);
       calendar.add(Calendar.DAY_OF_MONTH, number);
       date = calendar.getTime();
       return sdf.format(date);
   }

   /**
     * createTime: 2017/2/28
     * 获取某个时间和当前时间的
     * @param time String
     * @return long
     */
    public static long getdisTime(String time) throws ParseException{
       long dis = 0;
       String now = getBeijingTime("yyyyMMddHHmm");
       SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
       long nowtime = sdf.parse(now).getTime();
       long resTime = sdf.parse(time).getTime();
       dis = resTime-nowtime;
       return dis;
    }

    public static long getdisTime1(String time) throws ParseException{
       long dis = 0;
       String now = getBeijingTime("yyyyMMddHHmm");
       SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
       long nowtime = sdf.parse(now).getTime();
       long resTime = sdf.parse(time).getTime();
       dis = nowtime-resTime;
       return dis;
    }

    public static String getWeekOfDate(Date dt) {
        String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        Calendar cal = Calendar.getInstance();
        cal.setTime(dt);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0)
            w = 0;
        return weekDays[w];
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值