Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java实用的DateUtils时间工具类介绍

Java实用的DateUtils时间工具类介绍

原创
作者头像
小马哥学JAVA
发布于 2022-12-01 05:22:21
发布于 2022-12-01 05:22:21
72200
代码可运行
举报
文章被收录于专栏:JAVA开发专栏JAVA开发专栏
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 日期工具类
 * <p>
 *   使用LocalDateTime存取或判断
 * </p>
 */
@Component
public class DateUtils {

  /**
   * 判断两个时间段是否重叠
   * @param slot1
   * @param slot2
   * @return
   */
  public static boolean overlapped(TimeSlot slot1, TimeSlot slot2) {
    TimeSlot previous, next;
    previous = slot1.startTime.isBefore(slot2.startTime) ? slot1 : slot2;
    next = slot2.startTime.isAfter(slot1.startTime) ? slot2 : slot1;
    // 这里业务需要,允许时间点的重叠
    // 例如某个时间段的起始时间:2020-06-29 00:00:00
    // 和另一个时间段的终止时间:2020-06-29 00:00:00
    // 它们俩可以有交点。如果不需要这种逻辑只把le改成lt
    // ,ge改成gt就可
    return !(lt(previous, next) || gt(previous, next));
  }

  /**
   * 上个月的最后一天
   */
  public static String afterMonthLastDay() {
    Calendar c = Calendar.getInstance();
    //当前日期设置为指定日期
    c.setTime(new Date());
    //指定日期月份减去一
    c.add(Calendar.MONTH, -1);
    //指定日期月份减去一后的 最大天数
    c.set(Calendar.DATE, c.getActualMaximum(Calendar.DATE));
    //获取上给月最后一天的日期
    Date lastDateOfPrevMonth = c.getTime();
    java.text.DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
    return formater.format(lastDateOfPrevMonth);
  }

  /**
   * 构造一个时间段
   * @param startTime
   * @param endTime
   * @return
   */
  public static TimeSlot buildSlot(LocalDateTime startTime, LocalDateTime endTime) {
    return new TimeSlot(startTime, endTime);
  }

  /**
   * less equal
   * 小于等于
   * @param prev
   * @param next
   * @return
   */
  private static boolean le(TimeSlot prev, TimeSlot next) {
    return lt(prev, next) || next.endTime.isEqual(prev.startTime);
  }

  /**
   * greater equal
   * 大于等于
   * @param prev
   * @param next
   * @return
   */
  private static boolean ge(TimeSlot prev, TimeSlot next) {
    return gt(prev, next) || prev.endTime.isEqual(next.startTime);
  }

  /**
   * greater than
   * 大于
   * @param prev
   * @param next
   * @return
   */
  private static boolean gt(TimeSlot prev, TimeSlot next) {
    return prev.endTime.isBefore(next.startTime);
  }

  /**
   * less than
   * 小于
   * @param prev
   * @param next
   * @return
   */
  private static boolean lt(TimeSlot prev, TimeSlot next) {
    return next.endTime.isBefore(prev.startTime);
  }


  /**
   * 将单元格数据转换为日期样式的字符串
   *
   * @param cell
   * @return
   */
  public static String convertDate(Cell cell) {
    String value = "";
    if (cell.getCellType() == CellType.NUMERIC) {
      if (HSSFDateUtil.isCellDateFormatted(cell)) {
        //用于转化为日期格式
        Date d = cell.getDateCellValue();
        java.text.DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
        value = formater.format(d);
      }
    }
    return value;
  }

  /**
   * 将单元格数据转换为日期样式的字符串
   *
   * @param cell
   * @return
   */
  public static String convertString(Cell cell) {
    String value = "";
    if (cell.getCellType() == CellType.STRING) {
      value = cell.getStringCellValue();
    }
    return value;
  }

  /**
   * 将单元格数据转换为金额样式的字符串
   * @author:xhmaca
   * @param cell
   * @return
   */
  public static String convertBigDecimal(Cell cell) {
    String value = "";
    if (cell.getCellType() == CellType.NUMERIC) {
      if (HSSFDateUtil.isCellDateFormatted(cell)) {

      } else {
        BigDecimal bigDecimal = new BigDecimal(cell.getNumericCellValue());
        value = bigDecimal.toString();
      }
    }
    return value;
  }

  /**
   * 计算字符型日期天数差
   * @param dateStart
   * @param dateStop
   */
  public static Integer dateDifferent(String dateStart, String dateStop) {
    long diff,diffSeconds,diffMinutes,diffHours,diffDays = 0;
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    try {
      Date d1 = format.parse(dateStart);//毫秒ms
      Date d2 = format.parse(dateStop);//毫秒ms
      diff = d2.getTime() - d1.getTime();
      diffSeconds = diff / 1000 % 60;
      diffMinutes = diff / (60 * 1000) % 60;
      diffHours = diff / (60 * 60 * 1000) % 24;
      diffDays = diff / (24 * 60 * 60 * 1000);
      System.out.print("两个时间相差:");
      System.out.print(diffDays + "天,");
      System.out.print(diffHours + "小时,");
      System.out.print(diffMinutes + "分钟,");
      System.out.print(diffSeconds + "秒.");
    } catch (ParseException e) {
      e.printStackTrace();
    }
    int days = (int) diffDays;
    return days;
  }

  /**
   * 计算字符型日期天数差
   * @param dateStart
   * @param dateStop
   */
  public static long datelongDifferent(String dateStart, String dateStop) {
    long diff,diffSeconds,diffMinutes,diffHours,diffDays = 0;
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    try {
      Date d1 = format.parse(dateStart);//毫秒ms
      Date d2 = format.parse(dateStop);//毫秒ms
      diff = d2.getTime() - d1.getTime();
      diffSeconds = diff / 1000 % 60;
      diffMinutes = diff / (60 * 1000) % 60;
      diffHours = diff / (60 * 60 * 1000) % 24;
      diffDays = diff / (24 * 60 * 60 * 1000);
      System.out.print("两个时间相差:");
      System.out.print(diffDays + "天,");
      System.out.print(diffHours + "小时,");
      System.out.print(diffMinutes + "分钟,");
      System.out.print(diffSeconds + "秒.");
    } catch (ParseException e) {
      e.printStackTrace();
    }
    return diffDays;
  }

  /**
   * 获取当前日期
   */
  public static String getCurrectDate()
  {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    Date date = new Date();//当前日期
    return df.format(date);
  }

  /**
   * 获取当前日期
   */
  public static String getLongFormatDate(String date)
  {
    SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    return df1.format(date);
  }

  /**
   * 获取当前日期
   */
  public static String getShortFormatDate(String date)
  {
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    return df.format(date);
  }

  /**
   * 计算年份
   * @param dateStart
   *
   */
  public static Integer getYear(String dateStart) {
    long diff,diffSeconds,diffMinutes,diffHours,diffDays = 0;
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    try {
      Date d1 = format.parse(dateStart);//毫秒ms
      return d1.getYear()+1900;

    } catch (ParseException e) {
      e.printStackTrace();
    }
    return 0;
  }

  /**
   * 时间段类
   */
  static class TimeSlot{
    private LocalDateTime startTime;
    private LocalDateTime endTime;

    public TimeSlot(LocalDateTime startTime, LocalDateTime endTime) {
      if (startTime.isAfter(endTime)) {
        this.startTime = endTime;
        this.endTime = startTime;
      } else {
        this.startTime = startTime;
        this.endTime = endTime;
      }
    }

  }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java.Utils:Date 时间工具类
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/160247.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/13
4410
Java 相关时间工具类
package com.cavytech.wear2.util; import android.text.TextUtils; import android.text.format.Time; import android.util.Log; import com.cavytech.wear2.entity.BandSleepStepBean; import com.cavytech.wear2.entity.GetSleepBean; import java.text.DateFormat;
先知先觉
2019/01/21
1.5K0
日期的工具类
import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils;
全栈程序员站长
2021/07/07
7670
一文带你入坑JDK8的新日期时间类 LocalDate、LocalTime、LocalDateTime
参考 https://blog.csdn.net/duan196_118/article/details/111597682 https://blog.csdn.net/qq_24754061/article/details/95500209 https://xijia.blog.csdn.net/article/details/106007147
时间静止不是简史
2023/02/23
5.2K0
一文带你入坑JDK8的新日期时间类 LocalDate、LocalTime、LocalDateTime
java最全最常用的日期工具类(随时补充)
@Slf4j public final class DateUtils { private DateUtils() { } private static final String FORMAT_YYYYMMDDHHMMSS = "yyyy-MM-dd HH:mm:ss"; public static final String FORMAT_YYYY_MM_DD = "yyyy-MM-dd"; public static final String FORMAT_
疯狂的KK
2023/04/10
1.3K0
时间工具类
import java.sql.Timestamp; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.*; /** * <p>时间工具类</p> * * @author : LiYu * @date : 2020-10-23 15:22 **/ public class TimeUtils { /*
jaychou
2022/12/26
1.4K0
LocalDateTime、Date时间工具类
参考:Date、LocalTime、LocalDate、LocalDate-时间操作工具类_Hatsune_Miku_的博客-CSDN博客
CBeann
2023/12/25
4050
java关于时间比较|String转Date|Date转String|指定时间加上指定天数后的日期|当时时间加上指定天数后的日期等的方法
但是都比较杂,看着很累,我呢就提取了一些精华的部分和经常用到的一些时间比较,其中包括
小小鱼儿小小林
2020/06/24
3.2K0
java关于时间比较|String转Date|Date转String|指定时间加上指定天数后的日期|当时时间加上指定天数后的日期等的方法
Java时间工具类
import java.sql.Timestamp; import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; public class TimestampTool { /** 将毫秒转成时间 *
用户7108768
2021/09/23
1.9K0
java获取各种时间,及格式
一只牛博
2025/05/30
1550
java两个日期相减-(日期)工具类
import java.lang.management.ManagementFactory; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.ZoneId;
高大北
2022/06/14
2.9K0
杨校老师课堂之封装工具类【时间工具类|类型转换器|客户端Servlet工具类】
1. 时间工具类 package cn.javabs.common.utils; import java.lang.management.ManagementFactory; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import jav
杨校
2022/09/23
1.4K0
Date类练习
控制台打印当前时间 import java.text.SimpleDateFormat; import java.util.Date; /** * Software:IntelliJ IDEA 2018.2.4 x64 * Author: MoBai·杰 * Date: 2020/5/5 10:30 * ClassName:DateDemoTest03 * 类描述:打印当前时间("yyyy年MM月dd日 HH时mm分ss秒") */ public class DateDemoTest03 {
框架师
2021/03/06
2K0
JAVA 常用日期工具类:DateUtil的基本常见方法
在我们java开发中,Date日期这个字段会被经常使用,比如获取当前系统的时间,获取上个月,上一年的时间,以及获取两个日期相差的时分秒数,或者对日期类型进行格式化,等等,等等,总之日期的使用多种多样,但万变不离其宗,今天我就整理了部分常见的java对Date的操作方法,供大家使用。
一诺千金
2020/04/30
14.1K0
用Java实现处理日期的工具类——常用日期处理方法
日期处理是开发过程中经常遇到的问题,以下是总结了开发中常用的方法,代码如下: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * * @项目名 ssh * @功能 处理日期的工具类 * @类名 DateUtils * @作者 Java自学通 * @日期 Aug 30, 20113:35:30 PM * @版本 1.
用户1289394
2018/02/27
1.3K0
常用的时间工具类
1.说明:收集一些常用的时间工具类,仅用作记录和学习交流。可以使用CTRL+F搜索关键字。
JaneYork
2023/10/11
2380
常用的时间工具类
网站自定义运行时间和当前时间和天气代码
代码如下,附在网页代码即可。文字可适当修改,自测。 <script language=javascript> function siteTime(){ window.setTimeout("siteTime()", 1000); var seconds = 1000 var minutes = seconds * 60 var hours = minutes * 60
Lcry
2022/11/29
8130
网站自定义运行时间和当前时间和天气代码
Java8时间方法LocalDate和LocalDateTime工具类
目的地-Destination
2023/10/12
5900
JavaScript实现网站运行时间
看到很多的博客站点上都是有网站运行时间统计的代码,之前有学过JS语言,之后上网上借鉴了一下网上大佬写的代码。就是一个简单的运行时间的减法运算,才用了JS的事件函数,获取当前时间等等操作,最后给大家看一下代码及效果图片吧!
Meng小羽
2019/12/23
1.2K3
Java开发实战:打造功能强大的日期时间处理工具类
在Java开发实战中,编写一个功能强大的日期时间处理工具类是提升开发效率和代码复用性的重要手段。此类主要负责对日期和时间进行各种格式化、计算、比较等操作,从而简化开发过程中对于日期时间复杂逻辑的处理。
用户1289394
2024/05/29
2010
Java开发实战:打造功能强大的日期时间处理工具类
推荐阅读
相关推荐
Java.Utils:Date 时间工具类
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验