java中日期处理的一些工具方法

简介: java中日期处理的一些工具方法


前言

现在是2022年4月16日15:35:14!忙里偷闲,直接来看方法吧,写完文章继续去改Bug:

1.计算两个日期之间相差的天数

/**
   * @param stratTime 开始时间
   * @param endTime 结束时间
   * @return 计算两个日期之间相差的天数
   */
  public static Map<String, Object> dateDiff(Long stratTime, Long endTime) {
    Map<String, Object> map = new HashMap<>();
    Long diff = endTime - stratTime;
    Long day = diff / (24 * 60 * 60 * 1000);
    Long hour = (diff / (60 * 60 * 1000) - day * 24);
    Long min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
    Long sec = (diff / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
    map.put("day", day);
    map.put("hour", hour);
    map.put("min", min);
    map.put("sec", sec);
    return map;
  }

2.将时间戳转换成时间

/**
   * 将时间戳转换成时间
   */
  public static Map<String, Object> formatTime(Long time) {
    Map<String, Object> map = new HashMap<>();
    Long day = time / (24 * 60 * 60 * 1000);
    Long hour = (time / (60 * 60 * 1000) - day * 24);
    Long min = ((time / (60 * 1000)) - day * 24 * 60 - hour * 60);
    Long sec = (time / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
    map.put("day", day);
    map.put("hour", hour);
    map.put("min", min);
    map.put("sec", sec);
    return map;
  }

3. 获取当前24小时的时间前后时间戳

/**
   * 将时间戳转换成时间
   */
    public static Map<String, Object> getTimeChuo() {
      Map<String, Object> map = new HashMap<>();
      Long nowTime = System.currentTimeMillis();
      Long startTime = nowTime - 24 * 60 * 60 * 1000;
      Long endTime = nowTime + 24 * 60 * 60 * 1000;
      map.put("startTime", startTime);
      map.put("endTime", endTime);
    return map;
  }

4.由出生日期获得年龄

public static int getAge(Date birthDay) throws Exception {
    Calendar cal = Calendar.getInstance();
    if (cal.before(birthDay)) {
      throw new IllegalArgumentException("出生日期小于当前时间,无效的日期!");
    }
    int yearNow = cal.get(Calendar.YEAR);
    int monthNow = cal.get(Calendar.MONTH);
    int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH);
    cal.setTime(birthDay);
    int yearBirth = cal.get(Calendar.YEAR);
    int monthBirth = cal.get(Calendar.MONTH);
    int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
    int age = yearNow - yearBirth;
    if (monthNow <= monthBirth) {
      if (monthNow == monthBirth) {
        if (dayOfMonthNow < dayOfMonthBirth) age--;
      } else {
        age--;
      }
    }
    return age;
  }

5.统计两个日期之间的所有日期

/**
   * 统计两个日期之间的所有日期
   */
  public static List<String> getBeginTimeAndEndTime(Date beginTime, Date endTime) {
    List<String> listDate = new ArrayList<>();
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    try {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(beginTime);
      while (calendar.getTime().before(endTime) || calendar.getTime().equals(endTime)) {
        listDate.add(dateFormat.format(calendar.getTime()));
        calendar.add(Calendar.DAY_OF_MONTH, 1);
      }
      return listDate;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return listDate;
  }

6.根据生日获取年龄的另一种方法

/**
   * 根据日期获取年龄
   */
  public static int getAgeByDate(Date date) throws Exception {
    Calendar cal = Calendar.getInstance();
    int thisYear = cal.get(Calendar.YEAR);
    int thisMonth = cal.get(Calendar.MONTH);
    int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
    cal.setTime(date);
    int birthYear = cal.get(Calendar.YEAR);
    int birthMonth = cal.get(Calendar.MONTH);
    int birthdayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
    int age = thisYear - birthYear;
    // 未足月
    if (thisMonth <= birthMonth) {
      // 当月
      if (thisMonth == birthMonth) {
        // 未足日
        if (dayOfMonth < birthdayOfMonth) {
          age--;
        }
      } else {
        age--;
      }
    }
    return age;
  }


相关文章
|
2月前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
143 83
|
3天前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
43 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
1月前
|
Java 开发者 微服务
Spring Boot 入门:简化 Java Web 开发的强大工具
Spring Boot 是一个开源的 Java 基础框架,用于创建独立、生产级别的基于Spring框架的应用程序。它旨在简化Spring应用的初始搭建以及开发过程。
56 6
Spring Boot 入门:简化 Java Web 开发的强大工具
|
2月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
58 26
|
2月前
|
Java
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
java小工具util系列4:基础工具代码(Msg、PageResult、Response、常量、枚举)
53 24
|
2月前
|
安全 Java 开发者
Java中WAIT和NOTIFY方法必须在同步块中调用的原因
在Java多线程编程中,`wait()`和`notify()`方法是实现线程间协作的关键。这两个方法必须在同步块或同步方法中调用,这一要求背后有着深刻的原因。本文将深入探讨为什么`wait()`和`notify()`方法必须在同步块中调用,以及这一机制如何确保线程安全和避免死锁。
46 4
|
2月前
|
Java
深入探讨Java中的中断机制:INTERRUPTED和ISINTERRUPTED方法详解
在Java多线程编程中,中断机制是协调线程行为的重要手段。了解和正确使用中断机制对于编写高效、可靠的并发程序至关重要。本文将深入探讨Java中的`Thread.interrupted()`和`Thread.isInterrupted()`方法的区别及其应用场景。
52 4
|
2月前
|
Java 数据处理 数据安全/隐私保护
Java处理数据接口方法
Java处理数据接口方法
27 1
|
2月前
|
数据采集 存储 监控
Java爬虫:数据采集的强大工具
在数据驱动的时代,Java爬虫技术凭借其强大的功能和灵活性,成为企业获取市场信息、用户行为及竞争情报的关键工具。本文详细介绍了Java爬虫的工作原理、应用场景、构建方法及其重要性,强调了在合法合规的前提下,如何有效利用Java爬虫技术为企业决策提供支持。
|
Java
JAVA方法的定义
JAVA方法的定义
101 0