对时间TimeUtils操作总结(2)

之前项目用到的一些时间的处理

  public static final SimpleDateFormat DATE_FORMAT_DATE = new SimpleDateFormat("yyyy-MM-dd");
  public static final SimpleDateFormat DATE_FORMAT_DATE_NO = new SimpleDateFormat("yyyyMMdd");
  public static final SimpleDateFormat DATETIME_FORMAT_DATE =
      new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  public static final SimpleDateFormat DATETIME_FORMAT_DATE_NO =
      new SimpleDateFormat("yyyyMMddHHmmss");
  public static final SimpleDateFormat DATETIME_FORMAT_DATE_no =
      new SimpleDateFormat("yyyy-MM-dd HH:mm");
  //  public static final SimpleDateFormat DATETIME_FORMAT_DATE_MS =
  //      new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

  public static final SimpleDateFormat MONTH_FORMAT = new SimpleDateFormat("yyyyMM");
  public static final SimpleDateFormat FORMAT_DATE = new SimpleDateFormat("MMdd");
  public static final SimpleDateFormat FORMAT_MONTH = new SimpleDateFormat("MM");
  public static final SimpleDateFormat FORMAT_YEAR = new SimpleDateFormat("yyyy");

  /**
   * 获取某月第一天
   *
   * @param time 日期时间  201801
   * @return
   * @throws Exception
   */
  public static String monthFirstDay(String time,SimpleDateFormat simpleDateFormat) throws Exception {
    Calendar calendar = Calendar.getInstance();
    // 设置时间,当前时间不用设置
    calendar.setTime(TimeUtils.MONTH_FORMAT.parse(time));
    // 设置日期为本月最大日期
    //		calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
    calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DATE));
    // 打印
    return simpleDateFormat.format(calendar.getTime());
  }

  /**
   * @param date
   * @param dateFormat
   * @return
   */
  public static String formatDateByPattern(Date date, String dateFormat) {
    SimpleDateFormat sdf = new SimpleDateFormat(dateFormat);
    String formatTimeStr = null;
    if (date != null) {
      formatTimeStr = sdf.format(date);
    }
    return formatTimeStr;
  }

  public static long getDistanceTimes(String str1, String str2) {
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date one;
    Date two;
    long day = 0;
    long hour = 0;
    long min = 0;
    long sec = 0;
    try {
      one = df.parse(str1);
      two = df.parse(str2);
      long time1 = one.getTime();
      long time2 = two.getTime();
      long diff;
      if (time1 < time2) {
        diff = time2 - time1;
      } else {
        diff = time1 - time2;
      }
      //            day = diff / (24 * 60 * 60 * 1000);
      //            hour = (diff / (60 * 60 * 1000) - day * 24);
      hour = (diff / (60 * 60 * 1000));
      //            min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
      //            sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return hour;
  }

  public static long getDistanceTimes(String str1, String str2, String type) {
    DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date one;
    Date two;
    long value = 0;
    long day = 0;
    long hour = 0;
    long min = 0;
    long sec = 0;
    try {
      one = df.parse(str1);
      two = df.parse(str2);
      long time1 = one.getTime();
      long time2 = two.getTime();
      long diff;
      if (time1 < time2) {
        diff = time2 - time1;
      } else {
        diff = time1 - time2;
      }
      day = diff / (24 * 60 * 60 * 1000);
      //            hour = (diff / (60 * 60 * 1000) - day * 24);
      hour = (diff / (60 * 60 * 1000));
      //      min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
      min = (diff / (60 * 1000));
      //      sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
      sec = (diff / 1000);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    if ("day".equals(type)) {
      value = day;
    }
    if ("hour".equals(type)) {
      value = hour;
    }
    if ("min".equals(type)) {
      value = min;
    }
    if ("sec".equals(type)) {
      value = sec;
    }

    return value;
  }

  /**
   * 获取某月最后一天
   *
   * @param time
   * @return
   * @throws Exception
   */
  public static String monthLastDay(String time) throws Exception {
    Calendar calendar = Calendar.getInstance();
    // 设置时间,当前时间不用设置
    calendar.setTime(TimeUtils.MONTH_FORMAT.parse(time));
    // 设置日期为本月最大日期
    calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
    //		calendar.set(Calendar.DATE,calendar.getActualMinimum(Calendar.DATE));
    // 打印
    return TimeUtils.DATE_FORMAT_DATE_NO.format(calendar.getTime());
  }

  /**
   * 根据指定日期 需要减去的天数 获取前一天的新日期
   *
   * @param date 日期 2016-5-17
   * @return 2016-5-16
   */
  public static Date getLastDay(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.DAY_OF_MONTH, -1);
    date = calendar.getTime();
    return date;
  }

  /**
   * 根据指定日期 需要减去的天数 获取后一天的新日期
   *
   * @param date 日期 2016-5-17
   * @return 2016-5-16
   */
  public static Date getNextDay(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.DAY_OF_MONTH, 1);
    date = calendar.getTime();
    return date;
  }

  /**
   * 根据指定日期 需要减去的月数 获取减去或添加月数后的新日期
   *
   * @param date 日期 2016-5-17
   * @param i 减去的月数 1
   * @return 2016-4-17
   */
  public static Date getLastDate(Date date, int i) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.MONTH, i);
    return cal.getTime();
  }

  /**
   * 根据指定日期 需要减去的天数 获取减去或添加天数后的新日期
   *
   * @param date 日期 2016-5-17
   * @param i 减去的天数 7
   * @return 2016-5-10
   */
  public static Date getLastDateByDay(Date date, int i) {
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    cal.add(Calendar.DAY_OF_MONTH, i);
    return cal.getTime();
  }

  /**
   * long time to string
   *
   * @param timeInMillis
   * @param dateFormat
   * @return
   */
  public static String getTime(long timeInMillis, SimpleDateFormat dateFormat) {
    return dateFormat.format(new Date(timeInMillis));
  }

  /**
   * long time to string, format is {@link #}
   *
   * @param timeInMillis
   * @return
   */
  public static String getTime(long timeInMillis) {
    return getTime(timeInMillis, DATETIME_FORMAT_DATE);
  }

  /**
   * get current time in milliseconds
   *
   * @return
   */
  public static long getCurrentTimeInLong() {
    return System.currentTimeMillis();
  }

  public static int getCurrentYear() {
    Calendar cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);
    return year;
  }

  public static int getCurrentMonth() {
    Calendar cal = Calendar.getInstance();
    int month = cal.get(Calendar.MONTH) + 1;
    return month;
  }

  public static int getCurrentDay() {
    Calendar cal = Calendar.getInstance();
    int day = cal.get(Calendar.DATE);
    return day;
  }

  /**
   * get current time in milliseconds, format is {@link #}
   *
   * @return
   */
  public static String getCurrentTimeInString() {
    return getTime(getCurrentTimeInLong());
  }

  /**
   * get current time in milliseconds
   *
   * @return
   */
  public static String getCurrentTimeInString(SimpleDateFormat dateFormat) {
    return getTime(getCurrentTimeInLong(), dateFormat);
  }

  /**
   * @param :@param firstStr
   * @param :@param secondStr @Title: compareDateTime @Description: 比较日期大小
   */
  public static boolean compareDateTime(
      String firstStr, String secondStr, SimpleDateFormat simpleDateFormat) {
    Date firstDate = null;
    Date secondDate = null;
    try {
      firstDate = simpleDateFormat.parse(firstStr);
      secondDate = simpleDateFormat.parse(secondStr);
    } catch (ParseException e) {
      e.printStackTrace();
    }
    if (firstDate == null || secondDate == null) {
      return false;
    }
    long firstLongTime = firstDate.getTime();
    long secondLongTime = secondDate.getTime();
    if (firstLongTime >= secondLongTime) {
      return false;
    } else {
      return true;
    }
  }

  /**
   * 几天前
   *
   * @param beforDay
   * @param simpleDateFormat
   * @return
   */
  public static String getTimeBeforDay(int beforDay, SimpleDateFormat simpleDateFormat) {
    Calendar c = Calendar.getInstance();
    int day = c.get(Calendar.DAY_OF_MONTH) - beforDay;
    c.set(Calendar.DAY_OF_MONTH, day);
    return simpleDateFormat.format(c.getTime());
  }

  /**
   * 某日的几天前
   *
   * @param beforDay
   * @param simpleDateFormat
   * @return
   */
  public static String getTimeBefore(int beforDay, String date, SimpleDateFormat simpleDateFormat)
      throws Exception {
    Date days = simpleDateFormat.parse(date);
    Calendar c = Calendar.getInstance();
    c.setTime(days);
    int day = c.get(Calendar.DAY_OF_MONTH) - beforDay;
    c.set(Calendar.DAY_OF_MONTH, day);
    return simpleDateFormat.format(c.getTime());
  }

  /**
   * 某日的x小时前
   *
   * @param afterHour
   * @param date
   * @param simpleDateFormat
   * @return
   */
  public static String getHourAfter(
      double afterHour, String date, SimpleDateFormat simpleDateFormat) throws Exception {
    Date days = simpleDateFormat.parse(date);
    Calendar c = Calendar.getInstance();
    c.setTime(days);
    int a_hour = (int) Math.floor(afterHour);
    int a_min = (int) (60 * (afterHour - a_hour));

    int hour = c.get(Calendar.HOUR) + a_hour;
    int min = c.get(Calendar.MINUTE) + a_min;
    c.set(Calendar.HOUR, hour);
    c.set(Calendar.MINUTE, min);
    return simpleDateFormat.format(c.getTime());
  }

  /**
   * 某日的x前
   *
   * @param before
   * @param date
   * @param simpleDateFormat
   * @param type
   * @return
   */
  public static String getTimeBeforeByType(int before, String date, SimpleDateFormat simpleDateFormat,String type) throws Exception {
    Date days = simpleDateFormat.parse(date);
    Calendar c = Calendar.getInstance();
    c.setTime(days);

    if ("month".equals(type)) {
      c.add(Calendar.MONTH, before);
    }else if ("year".equals(type)) {
      c.add(Calendar.YEAR, before);
    }
    return simpleDateFormat.format(c.getTime());
  }

  /**
   * 获取两个日期相差天数
   *
   * @param date1
   * @param date2
   * @return
   * @throws ParseException
   */
  public static int calculateDateInDay(
      String date1, String date2, SimpleDateFormat simpleDateFormat) throws ParseException {

    Date now = simpleDateFormat.parse(date1);
    Date date = simpleDateFormat.parse(date2);
    long l = now.getTime() - date.getTime();
    long day = l / (24 * 60 * 60 * 1000);
    return (int) day;
  }

  /**
   * 获取两个日期相差小时数
   *
   * @param date1
   * @param date2
   * @param simpleDateFormat
   * @return
   * @throws ParseException
   */
  public static int calculateDateInHour(
      String date1, String date2, SimpleDateFormat simpleDateFormat) throws ParseException {

    Date now = simpleDateFormat.parse(date1);
    Date date = simpleDateFormat.parse(date2);
    long l = now.getTime() - date.getTime();
    long day = l / (60 * 60 * 1000);
    return (int) day;
  }

  /**
   * 某日所属的周一到周日
   *
   * @param date (yyyy-MM-dd)
   * @return
   * @throws Exception
   */
  public static String getWeek(String date) throws Exception {
    Date time = TimeUtils.DATE_FORMAT_DATE.parse(date);
    Calendar cal = Calendar.getInstance();
    cal.setTime(time);
    //判断要计算的日期是否是周日,如果是则减一天计算周六的,否则会出问题,计算到下一周去了
    int dayWeek = cal.get(Calendar.DAY_OF_WEEK); //获得当前日期是一个星期的第几天
    if (1 == dayWeek) {
      cal.add(Calendar.DAY_OF_MONTH, -1);
    }
    cal.setFirstDayOfWeek(Calendar.MONDAY); //设置一个星期的第一天,按中国的习惯一个星期的第一天是星期一
    int day = cal.get(Calendar.DAY_OF_WEEK); //获得当前日期是一个星期的第几天
    cal.add(Calendar.DATE, cal.getFirstDayOfWeek() - day); //根据日历的规则,给当前日期减去星期几与一个星期第一天的差值

    String monday = TimeUtils.DATE_FORMAT_DATE.format(cal.getTime());
    cal.add(Calendar.DATE, 1);
    String tuesday = TimeUtils.DATE_FORMAT_DATE.format(cal.getTime());
    cal.add(Calendar.DATE, 1);
    String wednesday = TimeUtils.DATE_FORMAT_DATE.format(cal.getTime());
    cal.add(Calendar.DATE, 1);
    String thursday = TimeUtils.DATE_FORMAT_DATE.format(cal.getTime());
    cal.add(Calendar.DATE, 1);
    String friday = TimeUtils.DATE_FORMAT_DATE.format(cal.getTime());
    cal.add(Calendar.DATE, 1);
    String saturday = TimeUtils.DATE_FORMAT_DATE.format(cal.getTime());
    cal.add(Calendar.DATE, 1);
    String sunday = TimeUtils.DATE_FORMAT_DATE.format(cal.getTime());

    return monday + "," + tuesday + "," + wednesday + "," + thursday + "," + friday + "," + saturday
        + "," + sunday;
  }

  /**
   * 指定日期属于星期几
   *
   * @return
   */
  public static int dayForWeek(String date) throws Exception {

    Date time = TimeUtils.DATE_FORMAT_DATE.parse(date);
    Calendar cal = Calendar.getInstance();
    cal.setTime(time);

    int dayForWeek = 0;
    if (cal.get(Calendar.DAY_OF_WEEK) == 1) {
      dayForWeek = 7;
    } else {
      dayForWeek = cal.get(Calendar.DAY_OF_WEEK) - 1;
    }

    return dayForWeek;
  }

  public static int dayForWeek_(String pTime) {
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    Calendar c = Calendar.getInstance();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    try {
      c.setTime(format.parse(pTime));
    } catch (ParseException e) {
      e.printStackTrace();
    }
    int dayForWeek = 0;
    if (c.get(Calendar.DAY_OF_WEEK) == 1) {
      dayForWeek = 7;
    } else {
      dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
    }
    return dayForWeek - 1;
  }

  public static Map getFirstday_Lastday_Month(Date date) {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.MONTH, -1);
    Date theDate = calendar.getTime();

    //上个月第一天
    GregorianCalendar gcLast = (GregorianCalendar) Calendar.getInstance();
    gcLast.setTime(theDate);
    gcLast.set(Calendar.DAY_OF_MONTH, 1);
    String day_first = df.format(gcLast.getTime());
    StringBuffer str = new StringBuffer().append(day_first).append(" 00:00:00");
    day_first = str.toString();

    //上个月最后一天
    calendar.add(Calendar.MONTH, 2); //加一个月
    calendar.set(Calendar.DATE, 1); //设置为该月第一天
    calendar.add(Calendar.DATE, -1); //再减一天即为上个月最后一天
    String day_last = df.format(calendar.getTime());
    StringBuffer endStr = new StringBuffer().append(day_last);
    day_last = endStr.toString();

    Map map = new HashMap();
    map.put("first", day_first);
    map.put("last", day_last);
    return map;
  }

  //获取该日期所属月份的最后一天日期"2012-05-02"
  public static String getLastDateByDate(String getDate) {
    String last = null;
    try {
      SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
      String str = getDate;
      Date date = df.parse(str);
      Map map = getFirstday_Lastday_Month(date);
      last = map.get("last").toString();
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }

    return last;
  }

  private static Date getMonthStart(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    int index = calendar.get(Calendar.DAY_OF_MONTH);
    calendar.add(Calendar.DATE, (1 - index));
    return calendar.getTime();
  }

  private static Date getMonthEnd(Date date) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(Calendar.MONTH, 1);
    int index = calendar.get(Calendar.DAY_OF_MONTH);
    calendar.add(Calendar.DATE, (-index));
    return calendar.getTime();
  }

  //获取该月下的所有日期
  public static List<String> getMonthAllDays(String getDate) {
    List<String> dateList = new ArrayList();
    try {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      String str = getDate;
      Date d = sdf.parse(str);
      // 月初
      //System.out.println("月初" + sdf.format(getMonthStart(d)));
      // 月末
      //System.out.println("月末" + sdf.format(getMonthEnd(d)));

      Date date = getMonthStart(d);
      Date monthEnd = getMonthEnd(d);
      while (!date.after(monthEnd)) {
        dateList.add(sdf.format(date));
        date = getNextDay(date);
      }
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
    return dateList;
  }

  /**
   * Get the Dates between Start Date and End Date.
   *
   * @param p_start Start Date
   * @param p_end End Date
   * @return Dates List
   */
  public static List<String> getDates(Calendar p_start, Calendar p_end,String type) {
    List<String> result = new ArrayList<String>();
    Calendar temp = p_start;
    p_end.add(Calendar.DAY_OF_YEAR, 1);
    while (temp.before(p_end)) {
      result.add(DATE_FORMAT_DATE.format(temp.getTime()));
      if ("month".equals(type)){
        temp.add(Calendar.MONTH, 1);
      }else {
        temp.add(Calendar.DAY_OF_YEAR, 1);
      }
    }

    return result;
  }

  /**
   * 获取两个日期内的日期
   *
   * @param startDate
   * @param endDate
   * @return
   */
  public static List<String> getDaysByTwoDate(String startDate, String endDate, String type) {
    List<String> dates = new ArrayList();
    try {
      Calendar dayc1 = new GregorianCalendar();
      DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
      Date daystart = df.parse(startDate); //start_date是类似"2013-02-02"的字符串
      dayc1.setTime(daystart);
      Calendar dayc2 = new GregorianCalendar();
      Date dayend = df.parse(endDate); //start_date是类似"2013-02-02"的字符串
      dayc2.setTime(dayend);
      dayc2.add(Calendar.MONTH, 0);
      dates = getDates(dayc1, dayc2, type);
    } catch (Exception e) {
      System.out.println(e.getMessage());
    }
    return dates;
  }



  /**
   * 获取某日期在一年的第几周
   *
   * @param time
   * @return
   * @throws ParseException
   */
  public static int getYearWeek(String time) throws ParseException {
    Calendar ca = Calendar.getInstance();
    SimpleDateFormat dsf = new SimpleDateFormat("yyyyMMdd");
    Date date = dsf.parse(time);

    ca.setTime(date);

    String year = time.substring(0, 4);
    String startDate = year + "0101";
    Date date1 = dsf.parse(startDate);
    Calendar ca1 = Calendar.getInstance();
    ca1.setTime(date1);

    String NextstartDate = (Integer.parseInt(year) + 1) + "0101";
    Date date2 = dsf.parse(NextstartDate);
    Calendar ca2 = Calendar.getInstance();
    ca2.setTime(date2);

    int weekDay = ca1.get(Calendar.DAY_OF_WEEK);
    int nextWeekDay = ca2.get(Calendar.DAY_OF_WEEK);
    int days = ca.get(Calendar.DAY_OF_YEAR);
    int intervalDays = 7 - (weekDay - 2); //今年第一周有几天

    int okDay = weekDay - 1; //今年的1号是星期几

    int koDay = nextWeekDay - 1; //下一年的1号是星期几

    if (intervalDays == 8) {
      intervalDays = 1;
    }

    if (okDay == 0) {
      okDay = 7;
    }

    if (koDay == 0) {
      koDay = 7;
    }

    if (okDay > 4) {
      if (days - intervalDays <= 0) {
        return getYearWeek((Integer.parseInt(year) - 1) + "1231");
      } else {
        if (ca.get(Calendar.WEEK_OF_YEAR) == 1) {
          if (koDay >= 4) {
            return 1;
          } else {
            return (days - intervalDays - 1) / 7 + 1;
          }
        } else {
          return (days - intervalDays - 1) / 7 + 1;
        }
      }

    } else {
      if (days - intervalDays <= 0) {
        return 1;
      } else {
        if (ca.get(Calendar.WEEK_OF_YEAR) == 1) {
          if (koDay >= 4) {
            return (days - intervalDays - 1) / 7 + 2;
          } else {
            return 1;
          }
        } else {
          return (days - intervalDays - 1) / 7 + 2;
        }
      }
    }
  }

  public static String convertTime(String time) throws Exception {
    SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
    Calendar c = new GregorianCalendar();
    c.setFirstDayOfWeek(Calendar.MONDAY);
    c.setMinimalDaysInFirstWeek(7);
    c.setTime(format.parse(time));
    String a_time_Y = String.valueOf(c.get(Calendar.YEAR));
    String a_time_W;
    String a_time_M;

    if (TimeUtils.getYearWeek(time) >= 10) {
      a_time_W = String.valueOf(TimeUtils.getYearWeek(time));
    } else {
      a_time_W = "0" + String.valueOf(TimeUtils.getYearWeek(time));
    }
    if (c.get(Calendar.MONTH) >= 9) {
      a_time_M = String.valueOf(c.get(Calendar.MONTH) + 1);
    } else {
      a_time_M = "0" + String.valueOf(c.get(Calendar.MONTH) + 1);
    }
    String a_time_D = time.substring(6);
    return a_time_Y + "," + a_time_M + "," + a_time_W + "," + a_time_D;
  }

  /** 判断当前时间是否在指定时间之内 开始时间为空 false 结束时间为空 >=开始时间 true 开始时间结束时间不为空 >=开始时间 <= 结束时间 true */
  public static boolean timeRange(String start_time, String end_time) throws Exception {
    long time = System.currentTimeMillis();
    boolean is_ture = false;
    if (StringUtils.isNull(start_time)) {
      return is_ture;
    }
    if (StringUtils.isNull(end_time)) {
      is_ture = time >= TimeUtils.DATETIME_FORMAT_DATE.parse(start_time).getTime();
      return is_ture;
    }
    is_ture =
        time >= TimeUtils.DATETIME_FORMAT_DATE.parse(start_time).getTime()
            && time <= TimeUtils.DATETIME_FORMAT_DATE.parse(end_time).getTime();
    return is_ture;
  }

  // 判断 yyyyMMdd 是否为当天
  public static boolean isTheDay(String day) {
    day = day.substring(4);
    String time = TimeUtils.getCurrentTimeInString(TimeUtils.FORMAT_DATE);
    if (day.equals(time)) {
      return true;
    }
    return false;
  }

  // 判断 yyyyMMdd 是否为当月
  public static boolean isTheMonth(String day) {
    String time = TimeUtils.getCurrentTimeInString(TimeUtils.FORMAT_MONTH);
    day = day.substring(4, 6);
    if (day.equals(time)) {
      return true;
    }
    return false;
  }

  // 判断 当前年是否大于 day
  public static boolean BTheYear(String day) {
    String time = TimeUtils.getCurrentTimeInString(TimeUtils.FORMAT_YEAR);
    if (Integer.parseInt(time) > Integer.parseInt(day)) {
      return true;
    }
    return false;
  }

  public static String getBeforeTime(int i) {
    Date date = new Date();
    Calendar dar = Calendar.getInstance();
    dar.setTime(date);
    SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    dar.add(java.util.Calendar.HOUR_OF_DAY, i);
    return dft.format(dar.getTime());
  }

  public static void main(String[] args) throws Exception {


    long a = 1539745006;


//    SimpleDateFormat SimpleDateFormatdft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//    Date date = new Date();
//    Calendar dar = Calendar.getInstance();
//    dar.setTime(date);
//    System.out.println(SimpleDateFormatdft.format(dar.getTime()));
//    SimpleDateFormat dft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//    dar.setTime(date);
//    dar.add(java.util.Calendar.HOUR_OF_DAY, -2);
//    System.out.println(dft.format(dar.getTime()));
//    dar.add(java.util.Calendar.HOUR_OF_DAY, 2);
    System.out.println(TimeUtils.getTime(a*1000));

    //    String AcceptTime = "2018-09-08 20:10:11";
    ////    Date date = TimeUtils.DATE_FORMAT_DATE.parse(AcceptTime);
    ////    String Accep = TimeUtils.DATETIME_FORMAT_DATE.format(date);
    //    String _ = TimeUtils.getCurrentTimeInString(TimeUtils.DATETIME_FORMAT_DATE);
    //    int c = TimeUtils.calculateDateInDay(_, AcceptTime, TimeUtils.DATETIME_FORMAT_DATE);
    //    System.out.println("c: " + c);

    //        String time = TimeUtils.getCurrentTimeInString(TimeUtils.DATE_FORMAT_DATE);
    //        System.out.println(getWeek(time));

    ////
    ////        System.out.println(time);
    ////        System.out.println(TimeUtils.getLongTime(time, TimeUtils.DATETIME_FORMAT_DATE_MS));
    //
    //        System.out.println("lllllll:"+compareDateTime("2016-02-30","2016-04-31",TimeUtils.DATE_FORMAT_DATE));

    /*SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    String str = "2016-02-10";
    Date d = sdf.parse(str);
    // 月初
    System.out.println("月初" + sdf.format(getMonthStart(d)));
    // 月末
    System.out.println("月末" + sdf.format(getMonthEnd(d)));

    Date date = getMonthStart(d);
    Date monthEnd = getMonthEnd(d);
    while (!date.after(monthEnd)) {
        System.out.println(sdf.format(date));
        date = getNextDay(date);
    }*/

    /*System.out.println(TimeUtils.compareDateTime("2016-08-04","2016-08-04",TimeUtils.DATE_FORMAT_DATE));*/

    /* List<String> dates = getDaysByTwoDate("2013-02-22","2013-03-15");
    int i = 0;
    while (i < dates.size()){
        System.out.println(dates.get(i));
        i++;
    }*/
    /*String  name = "~!@#$%&*".equals("~!@#$%&*")?"1":"2";
            System.out.println(name);


            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            calendar.add(Calendar.DAY_OF_WEEK, 0);
            int index = calendar.get(Calendar.DAY_OF_WEEK);

            System.out.println(TimeUtils.getDateStr(calendar.getTime(),TimeUtils.DATE_FORMAT_DATE));
             String   timeStap = ""+System.currentTimeMillis();
            timeStap = timeStap.substring(0,10);
            System.out.print(timeStap);
            String  abc = null;
            if(!"".equals(abc) && null != abc){
                abc = "123";
            }

            System.out.println("abc:"+abc);
    */

    //        int i = "1999.01".compareTo("2000.00");
    //        System.out.println("==i==" + i);
    //        String sign = MD5Util.getMD5Str32("yEylBIxsQbNznEPjzEx5vRbyEL5a7Xo9" + "1469257687" + "BNk9PYqmJ").toUpperCase();
    //        System.out.println("==i==" + sign);
    //        String[] split = ("C10120,121".split(","));
    //        List corp_list = Arrays.asList(split);
    //        System.out.println("==i==" + corp_list.size());
    //        System.out.println("==i==" + corp_list);
    //        String corp_code = "121";
    //        if (corp_list.contains(corp_code)) {
    //            System.out.println("==i==" + corp_code);
    //        }
    //
    //        List<String> list = new ArrayList<String>();
    //        list.add("草莓");         //向列表中添加数据
    //        list.add("香蕉");        //向列表中添加数据
    //        list.add("菠萝");        //向列表中添加数据
    //        for (int i = 0; i < list.size(); i++) {    //通过循环输出列表中的内容
    //            System.out.println(i + ":" + list.get(i));
    //        }
    //        String o = "苹果";
    //        System.out.println("list对象中是否包含元素" + o + ":" + list.contains(o));
    //    LocalDateTime currentTime = LocalDateTime.now();
    //    System.out.println("当前时间: " + currentTime);
    //
    //    LocalDate date1 = currentTime.toLocalDate();
    //    System.out.println("date1: " + date1);
    //
    //    Month month = currentTime.getMonth();
    //    int day = currentTime.getDayOfMonth();
    //    int seconds = currentTime.getSecond();
    //
    //    System.out.println("月: " + month.getValue() + ", 日: " + day + ", 秒: " + seconds);
    //
    //    LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012);
    //    System.out.println("date2: " + date2);
    //
    //    // 12 december 2014
    //    LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12);
    //    System.out.println("date3: " + date3);
    //
    //    // 22 小时 15 分钟
    //    LocalTime date4 = LocalTime.of(22, 15);
    //    System.out.println("date4: " + date4);
    //
    //    // 解析字符串
    //    LocalTime date5 = LocalTime.parse("20:15:30");
    //    System.out.println("date5: " + date5);
  }

  public static LocalDateTime parse(String date_time_str, String format) {
    LocalDateTime ldt = null;

    if (StringUtils.isNull(date_time_str)) {
      return ldt;
    }
    if (StringUtils.isNull(format)) {
      format = "yyyy-MM-dd HH:mm:ss";
    }
    ldt = LocalDateTime.parse(date_time_str, DateTimeFormatter.ofPattern(format));

    return ldt;
  }

  public static String getCron(Date date) {
    String dateFormat = "ss mm HH dd MM ? yyyy";
    return formatDateByPattern(date, dateFormat);
  }

  public static LocalDate parse(String date_str) {
    LocalDate ld = null;
    try {
      ld = LocalDate.parse(date_str);
    } catch (Exception e) {
      log.error(" error:" + e.getLocalizedMessage(), e);
      throw new CommonException("时间转换失败");
    }

    return ld;
  }

  public static String getWeekOfYear(String date_str) {
    int week = 0;
    if (StringUtils.isNull(date_str)) {
      throw new CommonException("时间不能为空");
    }

    Date date = null;
    try {
      date = DATE_FORMAT_DATE.parse(date_str);
    } catch (Exception e) {
      log.error(" error:" + e.getLocalizedMessage(), e);
      throw new CommonException("时间格式有误");
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setMinimalDaysInFirstWeek(4);
    calendar.setFirstDayOfWeek(Calendar.MONDAY);
    calendar.setTime(date);

    week = calendar.get(Calendar.WEEK_OF_YEAR);
    String week_no = null;
    if (week < 10) {
      week_no = "0" + week;
    } else {
      week_no = week + "";
    }

    int year = calendar.getWeekYear();

    return year + "-" + week_no;
  }

  

原文地址:https://www.cnblogs.com/mfser/p/13255923.html