sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

DateUtil 处理时间工具类

/**
 * 获取日期中的某数值。如获取月份
 *
 * @param date     日期
 * @param dateType 日期格式
 * @return 数值
 */
private static int getInteger(Date date, int dateType) {
    int num = 0;
    Calendar calendar = Calendar.getInstance();
    if (date != null) {
        calendar.setTime(date);
        num = calendar.get(dateType);
    }
    return num;
}

/**

  • 增加日期中某类型的某数值。如增加日期
  • @param date 日期
  • @param dateType 类型
  • @param amount 数值
  • @return 计算后日期
    */
    public static Date addInteger(Date date, int dateType, int amount) {
    Date myDate = null;
    if (date != null) {
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    calendar.add(dateType, amount);
    myDate = calendar.getTime();
    }
    return myDate;
    }

/**

  • 增加日期的年份。失败返回null。
  • @param date 日期
  • @param yearAmount 增加数量。可为负数
  • @return 增加年份后的日期
    */
    public static Date addYear(Date date, int yearAmount) {
    return addInteger(date, Calendar.YEAR, yearAmount);
    }

/**

  • 增加日期的月份。失败返回null。
  • @param date 日期
  • @param monthAmount 增加数量。可为负数
  • @return 增加月份后的日期
    */
    public static Date addMonth(Date date, int monthAmount) {
    return addInteger(date, Calendar.MONTH, monthAmount);
    }

/**

  • 增加日期的天数。失败返回null。
  • @param date 日期
  • @param dayAmount 增加数量。可为负数
  • @return 增加天数后的日期
    */
    public static Date addDay(Date date, int dayAmount) {
    return addInteger(date, Calendar.DATE, dayAmount);
    }

/**

  • 增加日期的小时。失败返回null。
  • @param date 日期
  • @param hourAmount 增加数量。可为负数
  • @return 增加小时后的日期
    */
    public static Date addHour(Date date, int hourAmount) {
    return addInteger(date, Calendar.HOUR_OF_DAY, hourAmount);
    }

/**

  • 增加日期的分钟。失败返回null。
  • @param date 日期
  • @param minuteAmount 增加数量。可为负数
  • @return 增加分钟后的日期
    */
    public static Date addMinute(Date date, int minuteAmount) {
    return addInteger(date, Calendar.MINUTE, minuteAmount);
    }

/**

  • 增加日期的秒钟。失败返回null。
  • @param date 日期
  • @param secondAmount 增加数量。可为负数
  • @return 增加秒钟后的日期
    */
    public static Date addSecond(Date date, int secondAmount) {
    return addInteger(date, Calendar.SECOND, secondAmount);
    }

/**

  • 获取日期的年份。失败返回0。
  • @param date 日期
  • @return 年份
    */
    public static int getYear(Date date) {
    return getInteger(date, Calendar.YEAR);
    }

/**

  • 获取日期的月份。失败返回0。
  • @param date 日期
  • @return 月份
    */
    public static int getMonth(Date date) {
    return getInteger(date, Calendar.MONTH) + 1;
    }

/**

  • 获取日期的天数。失败返回0。
  • @param date 日期
  • @return 天
    */
    public static int getDay(Date date) {
    return getInteger(date, Calendar.DATE);

}

/**

  • 根据日期获取相差天数
  • @param start
  • @param end
  • @return
    */
    public static int getDayBetweenDayNot(Date start, Date end) {
    long diff = end.getTime() - start.getTime();
    long bet = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
    if (bet > Integer.MAX_VALUE) {
    throw new IllegalArgumentException("between days overflow");
    }
    return (int) bet;
    }

/**

  • 根据日期获取相差天数
  • @param start yyyyMMdd
  • @param end yyyyMMdd
  • @return
    */
    public static int getDayBetweenDays(Date start, Date end) {
    long diff = end.getTime() - start.getTime();
    long bet = TimeUnit.DAYS.convert(diff, TimeUnit.MILLISECONDS);
    if (bet > Integer.MAX_VALUE) {
    throw new IllegalArgumentException("between days overflow");
    }
    return (int) bet + 1;
    }

/**

  • 获取日期的小时。失败返回0。
  • @param date 日期
  • @return 小时
    */
    public static int getHour(Date date) {
    return getInteger(date, Calendar.HOUR_OF_DAY);
    }

/**

  • 获取日期的分钟。失败返回0。
  • @param date 日期
  • @return 分钟
    */
    public static int getMinute(Date date) {
    return getInteger(date, Calendar.MINUTE);
    }

/**

  • 获取日期的秒钟。失败返回0。
  • @param date 日期
  • @return 秒钟
    */
    public static int getSecond(Date date) {
    return getInteger(date, Calendar.SECOND);
    }

/**

  • 获取距离当天 23.59.59,剩余的秒时间。

  • @return 秒钟
    /
    public static Long getTimeRemaining() {
    /
    *

    • 当前时间毫秒数
      /
      long current = System.currentTimeMillis();
      /
      *
    • 今天零点零分零秒的毫秒数
      /
      long zero = current / (1000 * 3600 * 24) * (1000 * 3600 * 24) - TimeZone.getDefault().getRawOffset();
      /
      *
    • 今天23点59分59秒的毫秒数
      */
      long twelve = zero + 24 * 60 * 60 * 1000 - 1;

    return (twelve - current) / 1000;
    }

public static List<Date> getDateList(Date deliveryStDt, Date deliveryEdDt) {
List<Date> list = new ArrayList<>();
list.add(deliveryStDt);
while (true) {
Date date = addDay(deliveryStDt, 1);
// <
if (date != null && date.before(deliveryEdDt)) {
list.add(deliveryStDt);
}
break;
}
return list;
}

/**

  • 当前月最后一天
  • @return
    */
    public static String lastdate() {
    Calendar cale = Calendar.getInstance();
    SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_SIX);
    cale.add(Calendar.MONTH, 1);
    cale.set(Calendar.DAY_OF_MONTH, 0);
    return format.format(cale.getTime());
    }

/**

  • 当前月第一天
  • @return
    */
    public static String firstdate() {
    Calendar cale = Calendar.getInstance();
    SimpleDateFormat format = new SimpleDateFormat(DATE_FORMAT_SIX);
    // 获取当前月的第一天
    cale.add(Calendar.MONTH, 0);
    cale.set(Calendar.DAY_OF_MONTH, 1);
    return format.format(cale.getTime());
    }

/**

  • 当前年月
  • @return
    */
    public static String currentdate() {
    SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月");
    return format.format(new Date());
    }

/**

  • 当前系统日期T1所在月的下一月的第5日
  • @return
    */
    public static Date nextdate() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MONTH, 1);
    calendar.set(Calendar.DAY_OF_MONTH, 5);
    return calendar.getTime();
    }

/**

  • 当前系统日期T1所在月的下一月的最后一日
  • @return
    */
    public static Date nextlastdate() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.MONTH, 2);
    calendar.set(Calendar.DAY_OF_MONTH, 0);
    return calendar.getTime();
    }

/**

  • 获得日期的开始时间,即2012-01-01 00:00:00
  • @return
    */
    public static Date getDayStartTime(Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.HOUR_OF_DAY, 0);
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    c.set(Calendar.MILLISECOND, 0);
    return c.getTime();
    }

/**

  • 获得日期的结束时间,即2012-01-01 23:59:59
  • @return
    */
    public static Date getDayEndTime(Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.HOUR_OF_DAY, 23);
    c.set(Calendar.MINUTE, 59);
    c.set(Calendar.SECOND, 59);
    return c.getTime();
    }

/**

  • 当前系统日期T1所在日初始时间 2020-05-06
  • @return
    */
    public static Date initDate() {
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    calendar.clear();
    calendar.set(year, month, day);
    return calendar.getTime();
    }

/**

  • 获得本周的第一天,周一
  • @return
    */
    public static Date getCurrentWeekDayStartTime() {
    SimpleDateFormat longSdf = new SimpleDateFormat(DATE_FORMAT_FOUR);
    SimpleDateFormat shortSdf = new SimpleDateFormat(DATE_FORMAT_SIX);
    Calendar c = Calendar.getInstance();
    try {
    int weekday = c.get(Calendar.DAY_OF_WEEK) - 2;
    c.add(Calendar.DATE, -weekday);
    c.setTime(longSdf.parse(shortSdf.format(c.getTime()) + " 00:00:00"));
    } catch (Exception e) {
    log.error("getCurrentWeekDayStartTime异常{}", e.toString());
    }
    return c.getTime();
    }

/**

  • 获得本周的最后一天,周日
  • @return
    */
    public static Date getCurrentWeekDayEndTime() {
    SimpleDateFormat longSdf = new SimpleDateFormat(DATE_FORMAT_FOUR);
    SimpleDateFormat shortSdf = new SimpleDateFormat(DATE_FORMAT_SIX);
    Calendar c = Calendar.getInstance();
    try {
    int weekday = c.get(Calendar.DAY_OF_WEEK);
    c.add(Calendar.DATE, 8 - weekday);
    c.setTime(longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59"));
    } catch (Exception e) {
    log.error("getCurrentWeekDayEndTime异常{}", e.toString());
    }
    return c.getTime();
    }

/**

  • 获得本月的开始时间
  • @return
    */
    public static Date getCurrentMonthStartTime() {
    SimpleDateFormat shortSdf = new SimpleDateFormat(DATE_FORMAT_SIX);
    Calendar c = Calendar.getInstance();
    Date now = null;
    try {
    c.set(Calendar.DATE, 1);
    now = shortSdf.parse(shortSdf.format(c.getTime()));
    } catch (Exception e) {
    log.error("getCurrentMonthStartTime异常{}", e.toString());
    }
    return now;
    }

/**

  • 本月的结束时间
  • @return
    */
    public static Date getCurrentMonthEndTime() {
    SimpleDateFormat longSdf = new SimpleDateFormat(DATE_FORMAT_FOUR);
    SimpleDateFormat shortSdf = new SimpleDateFormat(DATE_FORMAT_SIX);
    Calendar c = Calendar.getInstance();
    Date now = null;
    try {
    c.set(Calendar.DATE, 1);
    c.add(Calendar.MONTH, 1);
    c.add(Calendar.DATE, -1);
    now = longSdf.parse(shortSdf.format(c.getTime()) + " 23:59:59");
    } catch (Exception e) {
    log.error("getCurrentMonthEndTime异常{}", e.toString());
    }
    return now;
    }

public static Long getCurrentDateCounter(Date date) {
if (date == null) {
return 0L;
}
return (date.getTime() - System.currentTimeMillis()) / 1000;
}

原文链接:https://blog.csdn.net/ZJX103RLF/article/details/120964771
posted on 2024-11-21 10:21  sunny123456  阅读(4)  评论(0编辑  收藏  举报