常用DateUtils工具类

package com.gh.common.utils;

import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;

/**

  • 类描述:

  • @ClassName DateUtils

  • @Description TODO

  • @Author zll

  • @Date 2022/9/22 19:38
    */
    public class DateUtils extends org.apache.commons.lang3.time.DateUtils {

    private static String[] parsePatterns = {
    “yyyy-MM-dd”, “yyyy-MM-dd HH:mm:ss”, “yyyy-MM-dd HH:mm”, “yyyy-MM”,
    “yyyy/MM/dd”, “yyyy/MM/dd HH:mm:ss”, “yyyy/MM/dd HH:mm”, “yyyy/MM”,
    “yyyy.MM.dd”, “yyyy.MM.dd HH:mm:ss”, “yyyy.MM.dd HH:mm”, “yyyy.MM”};

    /**

    • 获取昨天当前时间的整点时间
    • 例如: currentTime=“2000-12-12 12:12:12” return “2000-12-11 12:00:00”
    • @param currentTime
    • @return
      */
      public static Date getYestodayOnHour(Date currentTime) {
      long time = currentTime.getTime();
      long yestodayTime = time - 1000 * 60 * 60 * 24;
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
      Date yesterday = null;
      try {
      yesterday = sdf.parse(sdf.format(new Date(yestodayTime)));
      } catch (ParseException e) {
      e.printStackTrace();
      }
      return yesterday;
      }

    /**

    • 获取本周的第一天的日期(周一是第一天)
    • @return String
      **/
      public static String getWeekStart() {
      Calendar cal = Calendar.getInstance();
      cal.add(Calendar.WEEK_OF_MONTH, 0);
      cal.set(Calendar.DAY_OF_WEEK, 2);
      Date time = cal.getTime();
      return new SimpleDateFormat(“yyyy-MM-dd”).format(time) + " 00:00:00";
      }

    public static final String parseDateToStr(final String format, final Date date) {
    return new SimpleDateFormat(format).format(date);
    }

    /**

    • 获取往前n天日期
    • @return
      */
      public static String getBeforeDay(int num) {
      Calendar calendar = Calendar.getInstance();
      calendar.add(Calendar.DATE, -num);
      return DateUtil.format(calendar.getTime(), “yyyy-MM-dd”);
      }

    /**

    • 比较三个日期时间

    • @return

    • @Date 2022/12/7 11:12

    • @Param [date1, date2, date3]
      **/
      public static String compareDateTime(String date1, String date2, String date3) {
      String lastReportTime = compareDateTime(date1, date2);

      return compareDateTime(lastReportTime, date3);
      }

    /**

    • 比较两个日期时间
    • @return
    • @Date 2022/12/7 11:12
    • @Param
      **/
      public static String compareDateTime(String date1, String date2) {
      String lastReportTime = null;
      if (Objects.nonNull(date1) && !“”.equals(date1) && Objects.nonNull(date2) && !“”.equals(date2)) {
      lastReportTime = date1;
      int compareTo = lastReportTime.compareTo(date2);
      if (compareTo < 0) {
      lastReportTime = date2;
      }
      return lastReportTime;
      } else if (Objects.isNull(date1) || “”.equals(date1)) {
      lastReportTime = date2;
      } else if (Objects.isNull(date2) || “”.equals(date2)) {
      lastReportTime = date1;
      }
      return lastReportTime;
      }

    /**

    • 获取该月的天数
    • @return
    • @Date 2022/12/27 15:07
    • @Param [date]
      **/
      public static int getDaysOfMonth(Date date) {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(date);
      return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
      }

    /**

    • 获取上个月的日期时间
    • @return
    • @Date 2022/12/27 15:07
    • @Param []
      **/
      public static Date getBeforeMonth() {
      Calendar c = Calendar.getInstance();
      c.setTime(new Date());
      c.add(Calendar.MONTH, -1);
      return c.getTime();
      }

    /**

    • 获取当天0点时间
    • @return
    • @Date 2022/12/27 16:34
    • @Param []
      **/
      public static String getTodayTime() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
      String time = sdf.format(new Date());
      return time + " 00:00:00";
      }

    /**

    • 获取今天的时间(字符串格式,yyyy-MM-dd)
    • @Date 2024/3/14 17:14
    • @Param []
    • @return
      **/
      public static String getTodayStr(){
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
      return sdf.format(new Date());
      }

    /**

    • 查询今日 0 点 (Date格式)
    • @Date 2024/3/14 17:18
    • @Param []
    • @return
      **/
      public static Date getTodayDateStart(){
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
      String date = sdf.format(new Date()) + " 00:00:00" ;
      return parseDate(date);
      }

    /**

    • 查询今日 23:59:59 点 (Date格式)
    • @Date 2024/3/14 17:19
    • @Param []
    • @return
      **/
      public static Date getTodayDateEnd(){
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
      String date = sdf.format(new Date()) + " 23:59:59" ;
      return parseDate(date);
      }

    /**

    • 查询日期 00:00:00 点 (Date格式)
    • @Date 2024/3/14 17:18
    • @Param []
    • @return
      **/
      public static String getDateBegin(Date date){
      return new SimpleDateFormat(“yyyy-MM-dd”).format(date) + " 00:00:00";
      }

    /**

    • 查询日期 23:59:59 点 (Date格式)
    • @Date 2024/3/14 17:19
    • @Param []
    • @return
      **/
      public static String getDateEnd(Date date){
      return new SimpleDateFormat(“yyyy-MM-dd”).format(date) + " 23:59:59";
      }

    /**

    • 获取昨天开始时间(0点)
    • @return
    • @Date 2022/12/27 16:45
    • @Param []
      **/
      public static String getYesterdayStartTime() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
      Calendar c = Calendar.getInstance();
      c.setTime(new Date());
      c.add(Calendar.DATE, -1);
      String time = sdf.format(c.getTime());
      return time + " 00:00:00";
      }

    /**

    • 获取昨天结束时间(23点59分59秒)
    • @return
    • @Date 2022/12/27 16:45
    • @Param []
      **/
      public static String getYesterdayEndTime() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
      Calendar c = Calendar.getInstance();
      c.setTime(new Date());
      c.add(Calendar.DATE, -1);
      String time = sdf.format(c.getTime());
      return time + " 23:59:59";
      }

    /**

    • 获取昨天结束时间(23点59分59秒)
    • @return
    • @Date 2022/12/27 16:45
    • @Param []
      **/
      public static Date getYesterdayEndTime(Date currentTime) {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
      Calendar c = Calendar.getInstance();
      c.setTime(currentTime);
      c.add(Calendar.DATE, -1);
      String time = sdf.format(c.getTime()) + " 23:59:59";
      return parseDate(time);
      }

    /**

    • 获取当月1日0点时间
    • @return
    • @Date 2022/12/27 16:34
    • @Param []
      **/
      public static String getCurrentMonthTime() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM”);
      String time = sdf.format(new Date());
      return time + “-01 00:00:00”;
      }

    /**

    • 获取上个月1日开始时间(0点)

    • @return

    • @Date 2022/12/27 16:45

    • @Param []
      **/
      public static String getBeforeMonthStartTime() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
      Calendar calendar = Calendar.getInstance();
      calendar.add(Calendar.MONTH, -1);
      calendar.set(Calendar.DAY_OF_MONTH, 1);
      //将小时至00
      calendar.set(Calendar.HOUR_OF_DAY, 00);
      //将分钟至00
      calendar.set(Calendar.MINUTE, 00);
      //将秒至00
      calendar.set(Calendar.SECOND, 00);

      return sdf.format(calendar.getTime());
      }

    /**

    • 获取上个月最后一日结束时间(23点59分59秒)
    • @return
    • @Date 2022/12/27 16:45
    • @Param []
      **/
      public static String getBeforeMonthEndTime() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
      Calendar calendar = Calendar.getInstance();
      int month = calendar.get(Calendar.MONTH);
      calendar.set(Calendar.MONTH, month - 1);
      calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
      //将小时至23
      calendar.set(Calendar.HOUR_OF_DAY, 23);
      //将分钟至59
      calendar.set(Calendar.MINUTE, 59);
      //将秒至59
      calendar.set(Calendar.SECOND, 59);
      return sdf.format(calendar.getTime());
      }

    /**

    • 获取当年1月1日0点时间
    • @return
    • @Date 2022/12/27 16:38
    • @Param []
      **/
      public static String getCurrentYearTime() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy”);
      String time = sdf.format(new Date());
      return time + “-01-01 00:00:00”;
      }

    public static String getLastYearStartTime() {
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy”);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date());
    calendar.add(Calendar.YEAR, -1);
    String time = sdf.format(calendar.getTime());
    return time + “-01-01 00:00:00”;
    }

    public static String getLastYearEndTime() {
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy”);
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(new Date());
    calendar.add(Calendar.YEAR, -1);
    String time = sdf.format(calendar.getTime());
    return time + “-12-31 23:59:59”;
    }

    public static boolean isSameDay(String time1, String time2) {
    DateTime begin = DateUtil.parse(time1);
    DateTime end = DateUtil.parse(time2);
    boolean is = DateUtil.isSameDay(begin, end);
    return is;
    }

    /**

    • 获取当前时间(yyyyMMddHHmmss格式)
    • @return
    • @Date 2022/12/27 16:38
    • @Param []
      **/
      public static String getCurrentTimeStr() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMddHHmmss”);
      String time = sdf.format(new Date());
      return time;
      }

    /**

    • 获取当前日期(yyyyMMdd格式)
    • @return
    • @Date 2022/12/27 16:38
    • @Param []
      **/
      public static String getCurrentDateStr() {
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyyMMdd”);
      String Date = sdf.format(new Date());
      return Date;
      }

    /**

    • 两个日期间间隔列表

    • @param startDate

    • @param endDate

    • @param interval

    • @return
      */
      public static List getDateList(String startDate, String endDate, int interval) {
      List dataList = new ArrayList();

      SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd”);
      Calendar start = Calendar.getInstance();
      Calendar end = Calendar.getInstance();
      try {
      start.setTime(format.parse(startDate));
      end.setTime(format.parse(endDate));
      } catch (ParseException e) {
      e.printStackTrace();
      }
      while (end.after(start)) {
      dataList.add(format.format(start.getTime()));
      start.add(Calendar.DAY_OF_MONTH, interval);
      }
      return dataList;
      }

    /**

    • 获取近30天的日期(返回 String 类型)
    • @return
    • @Date 2023/3/9 13:31
    • @Param []
      **/
      public static List getRecentThreeDayDateList() {
      Calendar c = Calendar.getInstance();
      SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd”);
      List lsDate = new ArrayList<>();
      for (int i = 0; i < 30; i++) {
      c.setTime(new Date());
      c.add(Calendar.DATE, -i);
      Date d = c.getTime();
      lsDate.add(sdf.format(d));
      Collections.sort(lsDate);
      }
      return lsDate;
      }

    /**

    • 获取几分钟前的时间
    • @param currentTime
    • @param minutes
    • @return
      */
      public static String getBeforeMinuteTime(Date currentTime, int minutes, String format) {
      Long now = currentTime.getTime();
      Long before = now - 1000 * 60 * minutes;
      SimpleDateFormat sdf = new SimpleDateFormat(format);
      String beforeTime = sdf.format(new Date(before));
      return beforeTime;
      }

    /**

    • 获取几分钟前的时间
    • @param currentTime
    • @param minutes
    • @return
      */
      public static String getAfterMinuteTime(Date currentTime, int minutes, String format) {
      Long now = currentTime.getTime();
      Long after = now + 1000 * 60 * minutes;
      SimpleDateFormat sdf = new SimpleDateFormat(format);
      String beforeTime = sdf.format(new Date(after));
      return beforeTime;
      }

    /**

    • 获取n(小时/天)后的时间(减去一秒)
    • @param currentTime
    • @param interval
    • @param type 1-天,2-小时
    • @param reduceFlag 减少标志(true-需要减去一秒)
    • @return
      */
      public static Date getAfterIntervalTime(Date currentTime, int interval, int type, boolean reduceFlag) {
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(currentTime);
      if (type == 1) {
      calendar.add(Calendar.DATE, interval);
      } else {
      calendar.add(Calendar.HOUR, interval);
      }
      if (reduceFlag) {
      calendar.add(Calendar.SECOND, -1);
      }
      return calendar.getTime();
      }

    /**

    • 日期型字符串转化为日期 格式
      */
      public static Date parseDate(Object str) {
      if (str == null) {
      return null;
      }
      try {
      return parseDate(str.toString(), parsePatterns);
      } catch (ParseException e) {
      return null;
      }
      }

    /**

    • 获取最近的n天日期集合,包括今天
    • @return
      */
      public static List getRecentDateList(int n){
      Calendar c=Calendar.getInstance();
      SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);
      List lsDate=new ArrayList<>();
      for(int i=0;i<n;i++){
      c.setTime(new Date());
      c.add(Calendar.DATE,-i);
      Date d=c.getTime();
      lsDate.add(sdf.format(d));
      Collections.sort(lsDate);
      }
      return lsDate ;
      }

    public static void main(String[] args) throws Exception{
    System.out.println(getAfterMinuteTime(new Date(),120,“yyyy/MM/dd HH:mm:ss”));
    String dateStr = “2024-01-15 08:00:00”;
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
    Date date = sdf.parse(dateStr);
    System.out.println(sdf.format(getAfterIntervalTime(date,1, 2, true)));
    System.out.println(sdf.format(getAfterIntervalTime(date,1,2, false)));
    }

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57069.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024.10月16日- 关于Vue2(1)

一 VUE概述与环境搭建 1.1 Vue概述 1.1.1 简介 Vue (发音为 /vjuː/&#xff0c;类似 view) 是一款轻量级的用于构建用户界面的 渐进式的JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高…

入门!Linux 常见指令及权限管理全面指南

Linux 操作系统在现代计算机应用中扮演着重要的角色&#xff0c;广泛用于服务器、桌面系统、嵌入式设备及云计算平台等领域。理解和掌握 Linux 常见指令及权限管理机制&#xff0c;是每一位系统管理员和开发人员的基础技能。本文将详细介绍 Linux 系统的基本背景、常用指令、权…

桂林旅游一点通:SpringBoot平台应用

3系统分析 3.1可行性分析 通过对本桂林旅游景点导游平台实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本桂林旅游景点导游平台采用SSM框架&#xff0c;JAVA作…

iOS IPA上传到App Store Connect的三种方案详解

引言 在iOS应用开发中&#xff0c;完成开发后的重要一步就是将IPA文件上传到App Store Connect以便进行测试或发布到App Store。无论是使用Xcode进行原生开发&#xff0c;还是通过uni-app、Flutter等跨平台工具生成的IPA文件&#xff0c;上传到App Store的流程都是类似的。苹果…

package.json 里的 dependencies和devDependencies区别

dependencies&#xff08;依赖的意思&#xff09;&#xff1a; 通过 --save 安装&#xff0c;是需要发布到生产环境的。 比如项目中使用react&#xff0c;那么没有这个包的依赖就会报错&#xff0c;因此把依赖写入dependencies npm install <package-name>// 缩写 np…

Android Framwork从零上手(一)下载编译AOSP源码

Android Framwork从零上手&#xff08;一&#xff09;下载编译AOSP源码 什么是AOSP硬件要求虚拟机安装开发环境搭建下载编译源码下载 repo 工具初始化仓库并同步远程代码编译源码运行模拟器 Android 系统开发涉及的知识面很广&#xff0c;代码量大&#xff0c;复杂度高&#xf…

传感器信号的存储和传输

对于大量传感器信号的存储和传输&#xff0c;可以采用以下存储和检测方案&#xff0c;以满足实时性、数据量、可靠性和传输带宽的需求&#xff1a; 1. 边缘计算 边缘计算是一种将计算和数据存储靠近数据源&#xff08;如传感器&#xff09;进行处理的方案。这可以减少数据传…

springboot扩展点都有哪些?

在Spring Boot中&#xff0c;扩展点指的是能够自定义或增强Spring Boot功能的机制。这些扩展点允许开发者在Spring Boot的基础设施之上做定制化配置、行为修改或增强。Spring Boot主要有以下几类扩展点&#xff1a; 1. ApplicationRunner 和 CommandLineRunner 这两个接口允许…

6、ES6

文章目录 一.关于ES6二.关于变量声明let声明变量const 声明常量 三.变量的解构赋值四.字符串的扩展五.函数的扩展函数默认参数rest参数箭头函数(函数的新写法) 六.数组的扩展七.对象的扩展语法上的简化对象的解构赋值 八.Symbol&#xff1a;新的数据类型(类似于字符串)独一无二…

CTFHUB技能树之SQL——时间盲注

开启靶场&#xff0c;打开链接&#xff1a; 说明这关对所有信息都做了统一输出&#xff0c;换成延时注入试试 输入&#xff1a; 1 and sleep(15) &#xff08;这里不知道为什么加上--倒是会影响sleep()函数的触发&#xff0c;从而没有延时感&#xff09; 可以观察到有明显的延…

【小白学机器学习16】 概率论的世界观2

目录 一 从正态分布说起 1.1 正态分布是自然分布&#xff0c;是客观 1.2 万物不齐 1.3 中庸 1.4 动态平衡 正态分布&#xff0c;概率论都是一种世界观 一 从正态分布说起 1.1 正态分布是自然分布&#xff0c;是客观 世界是客观的&#xff0c;是不以人们的意志想法为转…

vue3+ts+vite--路由跳转,params传参好像丢失了?

前言 相信大家一定写过后台管理系统&#xff0c;有一个很普遍的功能&#xff0c;就是点击编辑&#xff0c;根据id&#xff0c;跳转到相对应的编辑页面&#xff0c;id是通过路由params传递过去了&#xff0c;但是还有一个需求是要将父组件的名称也传递过去 &#xff0c;过程特别…

宁波市网站建设让你的网站更吸引人

宁波市网站建设让你的网站更吸引人 在数字化时代&#xff0c;拥有一个吸引人的网站已成为企业成功的关键因素之一。尤其在宁波市&#xff0c;随着经济的发展和互联网的普及&#xff0c;越来越多的企业意识到网站建设的重要性。那么&#xff0c;如何才能让你的网站更加吸引人呢&…

贪心day7

文章目录 前言使每位学生都有座位的最少移动次数分发饼干运动员和训练师的最大匹配数检查一个字符串是否可以打破另一个字符串优势洗牌 前言 &#x1f4ab;你好&#xff0c;我是辰chen&#xff0c;本文旨在准备考研复试或就业 &#x1f4ab;文章题目大多来自于 leetcode&#x…

webstorm 编辑器配置及配置迁移

1.下载地址 WebStorm&#xff1a;JetBrains 出品的 JavaScript 和 TypeScript IDE 其他版本下载地址 2.安装 点击下一步安装&#xff0c;可根据需要是否删除已有版本 注意&#xff1a; 完成安装后需要激活 3.设置快捷键 以下为个人常用可跳过或根据需要设置 如&#xff1a…

性能测试概念篇

一、性能测试(概念&#xff09; 为了发现系统性能问题或获取系统性能相关指标而进⾏的测试 ⼀般在真实环境、特定负载条件下&#xff0c;通过⼯具模拟实际软件系统的运行及其操作&#xff0c;同时监控性能各项指标&#xff0c;最后对测试结果进行分析来确定系统的性能情况 常…

汽车免拆诊断案例 | 2023款零跑C01纯电车后备厢盖无法电动打开和关闭

故障现象  一辆2023款零跑C01纯电车&#xff0c;累计行驶里程约为2万km&#xff0c;车主进厂反映&#xff0c;后备厢盖无法电动打开和关闭。 故障诊断  接车后试车&#xff0c;操作后备厢盖外侧、驾驶人侧及遥控钥匙上的后备厢盖开启按钮&#xff0c;可以听到后备厢盖解锁的…

【设计模式】深入理解Python中的适配器模式(Adapter Pattern)

深入理解Python中的适配器模式&#xff08;Adapter Pattern&#xff09; 在软件开发中&#xff0c;常常会遇到需要让不兼容的类或接口协同工作的问题。适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;通过提供一个包装器对象&#xff0c;…

J1:ResNet-50算法实战与解析(鸟类识别)

J1周&#xff1a;ResNet-50算法实战与解析(鸟类识别&#xff09; **理论背景**☕1、CNN算法发展2、ResNet介绍3、ResNet-50介绍1、Input->STAGE 0:2、残差块&#xff08;STAGE1->STAGE4&#xff09; **PyTorch实现**1、导入库并设置GPU2、导入和检查数据3、划分数据集4、…

图示详解OpenEuler下Samba多用户身份验证配置、测试

前言 前文《图例详解OpenEuler下Samba安装、配置和测试》已对Samba服务的工作原理、安装、配置和测试&#xff0c;做了系统的介绍&#xff0c;并对匿名用户的访问samba服务器做了配置&#xff0c;相必读者已对samba服务的流程有了初步、系统的了解&#xff0c;本文在以上基础上…