首页 > 其他分享 >DateUtil 处理时间工具类

DateUtil 处理时间工具类

时间:2024-11-21 10:21:31浏览次数:1  
标签:DateUtil return 处理 public Date static date 工具 Calendar

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

标签:DateUtil,return,处理,public,Date,static,date,工具,Calendar
From: https://www.cnblogs.com/sunny3158/p/18560033

相关文章

  • 模板代码设计工具
    项目地址:https://github.com/hkmadao/re_tcdt_rust.git目前流行低代码,无代码的开源项目,一定程度上可以帮组开发者减轻开发工作量,生成一些固定页面的功能,但是有较强的自定义需求时,使用起来还是有一定困难:只能按照低代码项目的框架去实现我们的目标项目代码模板比较固定,即使允许......
  • LLM2CLIP:使用大语言模型提升CLIP的文本处理,提高长文本理解和跨语言能力
    在人工智能迅速发展的今天,多模态系统正成为推动视觉语言任务前沿发展的关键。CLIP(对比语言-图像预训练)作为其中的典范,通过将文本和视觉表示对齐到共享的特征空间,为图像-文本检索、分类和分割等任务带来了革命性突破。然而其文本编码器的局限性使其在处理复杂长文本和多语言任务时......
  • 【springboot开发】SpringBoot中出入参增强的5种方法 : 加解密、脱敏、格式转换、时间
    1.使用@JsonSerialize和@JsonDeserialize注解2.全局配置Jackson的ObjectMapper3.使用@ControllerAdvice配合@InitBinder4.自定义HttpMessageConverter5.使用AOP进行切面编程结语在SpringBoot中,对接口的请求入参和出参进行自定义的增......
  • Linux服务器感染病毒,如何处理?
    1导语最近在做性能测试时,发现一台服务器的性能很差,一排查才发现原来是中了挖矿病毒,通常来说,服务器中病毒后,最快速的处理方式就是重装系统,但对于运行着重要业务的系统来说,重装系统较为麻烦。本文主要介绍Linux服务器上挖矿病毒的排查和查杀过程。2病毒排查通常来说挖矿病......
  • 【项目管理工具】项目年度工作总结报告
    项目年度工作总结报告是对过去一年中项目实施情况的全面回顾和总结,通常包括以下几个方面:项目开展情况:总结一年来项目实施的整体进展,包括项目的启动、执行、监控和完成情况。例如,某项目部在过去一年中完成了多个重要项目,如A项目的策划和实施、B项目的协调和管理等。团队协作......
  • 在Linux中使用 epoll 处理TCP连接断开问题
    在Linux中使用 epoll 处理TCP连接时,默认情况下无法直接检测到网线断开这类物理链路故障。这是因为TCP协议栈的工作机制导致的。当网线断开后,本地TCP协议栈并不能立刻感知到连接已经不可用。在底层网络设备(如网卡)没有向TCP协议栈反馈链路故障的情况下,TCP连接会处于一种看......
  • 【项目管理工具】项目重大缺陷表
    项目重大缺陷表是指在项目管理过程中,记录和跟踪那些对项目有重大影响的缺陷的表格。这些重大缺陷通常是指那些可能导致项目严重偏离控制目标、影响项目进度或质量、甚至可能带来经济损失的缺陷。在不同的项目管理文档中,重大缺陷表的内容和格式可能会有所不同,但其核心目的是确保......
  • 【项目管理工具】WBS工作分解
    WBS(WorkBreakdownStructure,工作分解结构)是项目管理中的一种重要工具,用于将复杂的项目任务分解为更小、更易管理的工作单元或组件。它通过层次化的结构将项目的整体工作范围逐层细化,直到达到可以独立估算、安排和监控的最小工作单元,即“工作包”。WBS的主要目的是帮助项目管......
  • 通过月亮树跨境选品工具分析亚马逊类目,用EXCEL制作气泡图、散点图做数据分析
    背景新手在选品的时候,面临数据维度多、分析困难、工具昂贵且需学习的问题。能不能通过这样的图表快速了解类目以及产品概况?这个教程让你通过月亮树选品工具,配合Excel制作气泡图、散点图,捋清楚从类目分析到选品的数据分析流程。帮助新手快速、直观地分析类目及产品概况,提高......
  • java工具类static静态方法读取yml配置
    当我们需要在工具类中获取yml配置的时候,由于变量是staic导致获取不到yml配置因为spring加载静态方法比IOC早,所以不能直接使用@Value注解读取yml配置,读取结果是null。@ComponentpublicclassTestUtil{//使用@Value注解读取yml配置的数据@Value("${test.url}")......