首页 > 其他分享 >Date日期工具类

Date日期工具类

时间:2024-11-04 15:59:45浏览次数:1  
标签:return public date 日期 static Date 工具 Calendar

/* *
 *类名:UtilDate
 *详细:工具类,可以用作获取系统日期等
 *说明:
 */
public class UtilDate {

  /**
   * 年月日时分秒(无下划线) yyyyMMddHHmmss
   */
  public static final String dtLong = "yyyyMMddHHmmss";

  /**
   * 完整时间 yyyy-MM-dd HH:mm:ss
   */
  public static final String simple = "yyyy-MM-dd HH:mm:ss";

  public static final String simpleX = "yyyy/MM/dd HH:mm:ss";

  /**
   * 年月日(无下划线) yyyyMMdd
   */
  public static final String dtShort = "yyyyMMdd";

  /**
   * 年月(无下划线) yyyyMM
   */
  public static final String yearMonth = "yyyyMM";

  /**
   * 年月日(无下划线) yyyy-MM-dd
   */
  public static final String simplebr = "yyyy-MM-dd";

  /**
   * 年月日(无下划线) yyyy/MM/dd
   */
  public static final String dtShortSlash = "yyyy/MM/dd";


  /**
   * @return 以yyyyMMddHHmmss为格式的当前系统时间
   */
  public static String getOrderNum() {
    Date date = new Date();
    DateFormat df = new SimpleDateFormat(dtLong);
    return df.format(date);
  }

  /**
   * @return 以yyyyMMddHHmmss为格式的指定时间
   */
  public static String getOrderNum(Date date) {
    if (StringUtils.isBlank(String.valueOf(date))) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(dtLong);
    return df.format(date);
  }

  /**
   * 获取系统当前日期(精确到毫秒),格式:yyyy-MM-dd HH:mm:ss
   *
   * @return
   */
  public static String getDateFormatter() {
    Date date = new Date();
    DateFormat df = new SimpleDateFormat(simple);
    return df.format(date);
  }

  /**
   * 获取指定日期(精确到毫秒),格式:yyyy-MM-dd HH:mm:ss
   *
   * @return
   */
  public static String getDateFormatter(Date date) {
    if (StringUtils.isBlank(String.valueOf(date))) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(simple);
    return df.format(date);
  }

  /**
   * 获取系统当期年月日(精确到天),格式:yyyyMMdd
   *
   * @return
   */
  public static String getDate() {
    Date date = new Date();
    DateFormat df = new SimpleDateFormat(dtShort);
    return df.format(date);
  }

  /**
   * 获取指定年月日(精确到天),格式:yyyyMMdd
   *
   * @return
   */
  public static String getDate(Date date) {
    if (StringUtils.isBlank(String.valueOf(date))) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(dtShort);
    return df.format(date);
  }

  /**
   * 获取系统当期年月日(精确到天),格式:yyyy-MM-dd
   *
   * @return
   */
  public static String getDatebr() {
    Date date = new Date();
    DateFormat df = new SimpleDateFormat(simplebr);
    return df.format(date);
  }

  /**
   * 获取指定年月日(精确到天),格式:yyyy-MM-dd
   *
   * @return
   */
  public static String getDatebr(Date date) {
    if (StringUtils.isBlank(String.valueOf(date))) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(simplebr);
    return df.format(date);
  }

  /**
   * 获取系统当期年月日(精确到天),格式:yyyy/MM/dd
   *
   * @return
   */
  public static String dtShortSlash() {
    Date date = new Date();
    DateFormat df = new SimpleDateFormat(dtShort);
    return df.format(date);
  }

  /**
   * 获取指定日期年月日(精确到天),格式:yyyy/MM/dd
   *
   * @return
   */
  public static String dtShortSlash(Date date) {
    if (StringUtils.isBlank(String.valueOf(date))) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(dtShort);
    return df.format(date);
  }

  /**
   * 获取指定日期的指定格式
   *
   * @return
   */
  public static String getFormatDate(String formatname, Date date) {
    if (StringUtils.isBlank(String.valueOf(date))) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(formatname);
    return df.format(date);
  }

  /**
   * 获取指定日期格式,指定日期的Date类型(谁调用谁处理异常问题)
   *
   * @return
   */
  public static Date getDateForString(String formatname, String date) throws Exception {
    if (StringUtils.isBlank(date)) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(formatname);
    return df.parse(date);
  }

  /**
   * 获取指定日期的Date类型(精确到秒,格式:yyyy-MM-dd HH:mm:ss)
   *
   * @return
   */
  public static Date getDateForSimple(String date) throws Exception {
    if (StringUtils.isBlank(date)) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(simple);
    return df.parse(date);
  }

  /**
   * 获取指定日期的Date类型(精确到秒,格式:yyyy/MM/dd HH:mm:ss)
   *
   * @return
   */
  public static Date getDateForSimpleX(String date) throws Exception {
    if (StringUtils.isBlank(date)) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(simpleX);
    return df.parse(date);
  }

  /**
   * 获取指定日期的Date类型(精确到秒,格式:yyyyMMddHHmmss)
   *
   * @return
   */
  public static Date getDateForDtLong(String date) throws Exception {
    if (StringUtils.isBlank(date)) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(dtLong);
    return df.parse(date);
  }

  /**
   * 获取指定日期的Date类型(精确到天,格式:yyyyMMdd)
   *
   * @return
   */
  public static Date getDateForDtShort(String date) throws Exception {
    if (StringUtils.isBlank(date)) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(dtShort);
    return df.parse(date);
  }

  /**
   * 获取指定日期的Date类型(精确到天,格式:yyyy-MM-dd)
   *
   * @return
   */
  public static Date getDateForSimplebr(String date) throws Exception {
    if (StringUtils.isBlank(date)) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(simplebr);
    return df.parse(date);
  }

  /**
   * 获取指定日期的Date类型(精确到天,格式:yyyy/MM/dd)
   *
   * @return
   */
  public static Date getDateForDtShortSlash(String date) throws Exception {
    if (StringUtils.isBlank(date)) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(dtShortSlash);
    return df.parse(date);
  }

  /**
   * 获取年月
   * 如果传值就按当前值
   * 若没传值按当前日期
   * @param time
   * @param originalFormat
   * @return
   */
  public static String getYearMonth(String time, String originalFormat) {
    SimpleDateFormat original = new SimpleDateFormat(originalFormat);
    SimpleDateFormat dateFormat = new SimpleDateFormat(yearMonth);
    Date date = new Date();
    if (StringUtils.isNotBlank(time)) {
      try {
        date = original.parse(time);
      } catch (ParseException e) {
        //e.printStackTrace();
      }
    }
    return dateFormat.format(date);
  }

  /**
   * 获取指定格式当前日期Date类型(谁调用谁处理异常问题)
   *
   * @return
   */
  public Date getFormatDate(String formatname) throws Exception {
    if (StringUtils.isBlank(formatname)) {
      return null;
    }
    DateFormat df = new SimpleDateFormat(formatname);
    return df.parse(df.format(new Date()));
  }

  /**
   * 产生随机的三位数
   *
   * @return
   */
  public static String getThree() {
    Random rad = new Random();
    return rad.nextInt(1000) + "";
  }

  /**
   * 计算两个时间之间相差多少天多少时多少分
   *
   * @return
   */
  public static String getDatePoor(Date startDate, Date endDate) {

    long nd = 1000 * 24 * 60 * 60;//每天毫秒数

    long nh = 1000 * 60 * 60;//每小时毫秒数

    long nm = 1000 * 60;//每分钟毫秒数

    long ns = 1000;//每秒毫秒数

    long diff = endDate.getTime() - startDate.getTime(); // 获得两个时间的毫秒时间差异

    long day = diff / nd;   // 计算差多少天

    long hour = diff % nd / nh; // 计算差多少小时

    long min = diff % nd % nh / nm;  // 计算差多少分钟

    long sec = diff % nd % nh % nm / ns;// 计算差多少秒//输出结果

    return day + "天" + hour + "小时" + min + "分钟" + sec + "秒";

  }

  /**
   * 判读时间差距:月
   */
  public static Long getMonths(Date startDate, Date endDate) {
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    c1.setTime(startDate);
    c2.setTime(endDate);
    if (c1.getTimeInMillis() < c2.getTimeInMillis()) {
      return 0L;
    }
    int year1 = c1.get(Calendar.YEAR);
    int year2 = c2.get(Calendar.YEAR);
    int month1 = c1.get(Calendar.MONTH);
    int month2 = c2.get(Calendar.MONTH);
    int day1 = c1.get(Calendar.DAY_OF_MONTH);
    int day2 = c2.get(Calendar.DAY_OF_MONTH);
    // 获取年的差值 假设 d1 = 2015-8-16  d2 = 2011-9-30
    int yearInterval = year1 - year2;
    // 如果 d1的 月-日 小于 d2的 月-日 那么 yearInterval-- 这样就得到了相差的年数
    if (month1 < month2 || month1 == month2 && day1 < day2) {
      yearInterval--;
    }
    // 获取月数差值
    int monthInterval = (month1 + 12) - month2;
    if (day1 < day2) {
      monthInterval--;
    }
    monthInterval %= 12;
    return (long) (yearInterval * 12 + monthInterval);
  }

  /**
   * 判读时间差距:天
   */
  public static Long getDay(Date startDate, Date endDate) {
    DateFormat dateFormat = new SimpleDateFormat(simple);
    Long days = null;
    long diff = endDate.getTime() - startDate.getTime();
    days = diff / (1000 * 60 * 60 * 24);
    return days;
  }

  /**
   * 判读时间差距:时
   */
  public static Long geHour(Date startDate, Date endDate) {
    DateFormat dateFormat = new SimpleDateFormat(simple);
    Long hour = null;
    long diff = endDate.getTime() - startDate.getTime();
    hour = diff / (1000 * 60 * 60);
    return hour;
  }

  /**
   * 判读时间差距:分
   */
  public static Long geMin(Date startDate, Date endDate) {
    DateFormat dateFormat = new SimpleDateFormat(simple);
    Long min = null;
    long diff = endDate.getTime() - startDate.getTime();
    min = diff / (1000 * 60);
    return min;
  }


  /**
   * 判读时间差距:秒
   */
  public static Long geSec(Date startDate, Date endDate) {
    DateFormat dateFormat = new SimpleDateFormat(simple);
    Long seconds = null;
    long diff = endDate.getTime() - startDate.getTime();
    seconds = diff / (1000);
    return seconds;
  }

  /**
   * 日期相加减
   *
   * @param time 时间字符串 yyyy-MM-dd HH:mm:ss
   * @param num  加的数,-num就是减去
   * @return 减去相应的数量的年的日期
   * @throws ParseException
   */
  public static Date yearAddNum(Date time, Integer num) {
    //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //Date date = format.parse(time);

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(time);
    calendar.add(Calendar.YEAR, num);
    Date newTime = calendar.getTime();
    return newTime;
  }

  /**
   * @param time 时间
   * @param num  加的数,-num就是减去
   * @return 减去相应的数量的月份的日期
   * @throws ParseException Date
   */
  public static Date monthAddNum(Date time, Integer num) {
    //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //Date date = format.parse(time);

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(time);
    calendar.add(Calendar.MONTH, num);
    Date newTime = calendar.getTime();
    return newTime;
  }

  /**
   * @param time 时间
   * @param num  加的数,-num就是减去
   * @return 减去相应的数量的周的日期
   * @throws ParseException Date
   */
  public static Date weekAddNum(Date time, Integer num) {
    //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //Date date = format.parse(time);

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(time);
    calendar.add(Calendar.WEEK_OF_MONTH, num);
    Date newTime = calendar.getTime();
    return newTime;
  }


  /**
   * @param time 时间
   * @param num  加的数,-num就是减去
   * @return 减去相应的数量的天的日期
   * @throws ParseException Date
   */
  public static Date dayAddNum(Date time, Integer num) {
    //SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //Date date = format.parse(time);

    Calendar calendar = Calendar.getInstance();
    calendar.setTime(time);
    calendar.add(Calendar.DAY_OF_MONTH, num);
    Date newTime = calendar.getTime();
    return newTime;
  }

  /**
   * 获取本月第一天时间
   */
  public static Date getMonthStartDate() {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, 1);
    return calendar.getTime();
  }

  /**
   * 获取本月最后一天
   */
  public static Date getMonthEndDate() {
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
    return calendar.getTime();
  }

  /**
   * 获取本周的开始时间
   */
  public static Date getBeginWeekDate() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(new Date());
    int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
    //周日是1 ,周一是 2 ,周二是 3
    //所以,当周的第一天 = 当前日期 - 距离周一过了几天(周一过了0天,周二过了1天,   周日过了6天)
    // 2 - 周一的(dayofweek:2 )= 0
    // 2 - 周二的(dayofweek:3 )= -1
    //                      .
    //                      .
    // 2 - 周日的(dayofweek:1) = 1(这个是不符合的需要我们修改)===》2 - 周日的(dayofweek:1 ==》8 ) = -6
    if (dayofweek == 1) {
      dayofweek += 7;
    }
    cal.add(Calendar.DATE, 2 - dayofweek);
    return cal.getTime();
  }

  /**
   * 本周的结束时间
   * 开始时间 + 6天
   */
  public static Date getEndWeekDate() {
    Calendar cal = Calendar.getInstance();
    cal.setTime(new Date());
    int dayofweek = cal.get(Calendar.DAY_OF_WEEK);
    if (dayofweek == 1) {
      dayofweek += 7;
    }
    cal.add(Calendar.DATE, 8 - dayofweek);//2 - dayofweek + 6
    return cal.getTime();
  }

  /**
   * @param
   * @return java.util.Date
   * @Description: 获取当天的开始时间
   * @Add_Date: 2021-10-29 15:49
   * @Modify_Date: 2021-10-29 15:49
   * @MetchName: getStartDate
   */
  public static Date getStartDate() {
    Calendar todayStart = Calendar.getInstance();
    todayStart.set(Calendar.HOUR, 0);//这里是12小时制的
    todayStart.set(Calendar.MINUTE, 0);
    todayStart.set(Calendar.SECOND, 0);
    todayStart.set(Calendar.MILLISECOND, 0);
    return todayStart.getTime();
  }

  public static Date getStartDate1() {
    Calendar todayStart = Calendar.getInstance();
    todayStart.set(Calendar.HOUR_OF_DAY,07);//这里获取的事件是24小时制的
    todayStart.set(Calendar.MINUTE, 0);
    todayStart.set(Calendar.SECOND, 0);
    todayStart.set(Calendar.MILLISECOND, 0);
    return todayStart.getTime();
  }

  /**
   * @param
   * @return java.util.Date
   * @Description: 获取当天的结束时间
   * @Add_Date: 2021-10-29 15:49
   * @Modify_Date: 2021-10-29 15:49
   * @MetchName: getStartDate
   */
  public static Date getEndDate() {
    Calendar todayEnd = Calendar.getInstance();
    todayEnd.set(Calendar.HOUR, 23);
    todayEnd.set(Calendar.MINUTE, 59);
    todayEnd.set(Calendar.SECOND, 59);
    todayEnd.set(Calendar.MILLISECOND, 999);
    return todayEnd.getTime();
  }
}

标签:return,public,date,日期,static,Date,工具,Calendar
From: https://www.cnblogs.com/javaxubo/p/18525461

相关文章

  • 版本控制工具 SVN 已跳过,其余有冲突
    更新报错解决原文:https://blog.csdn.net/hty18410140180/article/details/86231998在项目文件夹中,点击解决再点击确定一般我还会再点击一下清理再点击确定然后再更新,如果还是提示有冲突,就把冲突的那几个文件夹删除后,再更新。......
  • 红蓝对抗工具
    在红蓝对抗(RedTeamvs.BlueTeamexercises)中,双方会使用一系列的工具来模拟攻击和防御。以下是一些常用的工具,分为红队(攻击者)和蓝队(防御者):红队(攻击者)工具:KaliLinux -一个安全测试操作系统,预装了许多渗透测试工具。Metasploit -一个用于渗透测试的框架,提供漏洞利用、后......
  • sqlserver GETDATE() 可以返回不同格式的日期吗
    在SQLServer中,GETDATE()函数返回当前日期和时间,默认格式是yyyy-mm-ddhh:mi:ss:mmm(其中mmm是毫秒)。如果你想要返回不同格式的日期,你需要使用CONVERT()函数或者FORMAT()函数来格式化日期。使用 CONVERT() 函数CONVERT()函数允许你指定日期时间的样式,从而返回不同格......
  • 安利7个免费开源的网络监控工具(非常详细)零基础入门到精通,收藏这一篇就够了
    有朋友想要我安利几个免费开源的网络监控工具,今天给大家安排了7个比较常用的:NagiosCore、Zabbix、Icinga2、OpenNMS、Prometheus、Graphite、Checkmk。在开始介绍之前,你知道为啥需要网络监控工具,或许这个问题太low了,肯定有朋友说,当然需要才用了!换句话说,网络监控工具能......
  • blazor after visual studio update throws some strange JS warnings
    题意:Blazor在VisualStudio更新后出现一些奇怪的JS警告。问题背景:Afterupdatevisualstudioto17.11.3,inalmosteveryfilethatiopenedwithvisualstudiothrewsomewarning:在将VisualStudio更新到17.11.3后,几乎每个我用VisualStudio打开的文......
  • 节省50%人工录入时间!免费开源AI工具让法律文件数据提取更高效
    法律行业痛点:处理大量的合同、诉讼材料和财务报告等文件是一项繁琐且耗时的工作。这些文件中的表格常包含关键信息,如费用清单、时效统计和条款列表等,手动录入和整理这些数据不仅效率低下,而且容易出错。思通数科的表格识别技术,结合深度学习和计算机视觉,能够自动提取和结构化这些表......
  • Chrome 130 版本开发者工具(DevTools)更新内容
    Chrome130版本开发者工具(DevTools)更新内容一、网络(Network)面板更新1.重新定义网络过滤器网络面板获新增了一些过滤条件,这些过滤条件是根据反馈重新设计的,特定于类型的过滤条件保持不变,即在简洁的多选栏中显示一组标记。可以通过Cmd/Ctrl键+点击来多选类型过滤条件。......
  • jasypt-spring-boot-starter可以使用一些加密工具对敏感信息进行加密,并在应用启动时解
    gradle依赖implementation"com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4"在application.properties或application.yml或者(启动命令加上)中配置Jasypt的密钥:jasypt.encryptor.password=秘钥使用Jasypt提供的命令行工具或在线工具对敏感信息进行加密。例......
  • python-17-包和模块-创建属于自己的python工具包
    python-17-包和模块一.说明python中的基础系列关于组织代码的基本单位就是包和模块,在真实项目中我们不可能将所有代码都写在一起,或者我们的一些工具类库等需要单独处理,方便各模块调用,怎么办?这时候包和模块就来了,可以很方便的帮我们组织代码。来开始我们今天的日拱一卒!。......
  • ST官方开发工具(一) STM32CubeMX 安装
    STM32CubeMX安装安装Java的环境STM32CubeMX安装在开发STM32MP157的时候我们还需要用到一些ST官方提供的软件,一共有三种:STM32CubeMX、STM32CubeIDE、STM32CubeProgrammerSTM32CubeMX可以直接在ST官网下载到http://www.st.com/en/developmen......