登录 |  注册
首页 >  编程语言 >  Spring开发实战学习笔记 >  日期常用转换、计算工具类 DateUtils

日期常用转换、计算工具类 DateUtils

package com.yukx.common.utils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
/**
 * @author yukx
 * @Desc 日期常用转换、计算工具类
 */
@Slf4j
public class DateUtils {
    /**
     * 年月日 时分秒
     */
    public static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";
    /**
     * 年月日
     */
    public static final String YEAR_MONTH_DAY_PATTERN = "yyyy-MM-dd";
    /**
     * 年月日时分
     */
    public static final String YEAR_MONTH_DAY_HOUR_MINUTE_PATTERN = "yyyy-MM-dd HH:mm";
    /**
     * 时分
     */
    public static final String HOUR_MINUTE_PATTERN = "HH:mm";
    /**
     * 日期转字符串
     * @param date
     * @param pattern 格式
     * @return
     */
    public static String dateToString(Date date,String pattern){
        SimpleDateFormat formatter = new SimpleDateFormat(pattern);
        return formatter.format(date);
    }
    /**
     * 日期转字符串 yyyy-MM-dd HH:mm:ss
     * @param date
     * @return
     */
    public static String dateToString(Date date){
        SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_PATTERN);
        return formatter.format(date);
    }
    /**
     * 字符串转日期
     * @param date
     * @param pattern
     * @return
     */
    public static Date stringToDate(String date,String pattern){
        SimpleDateFormat formatter = new SimpleDateFormat(pattern);
        try {
            return formatter.parse(date);
        } catch (ParseException e) {
            log.warn(e.getMessage(),e);
        }
        return null;
    }
    /**
     * 获取世界标准时间
     * @param dateText
     * @return
     */
    public static String getUTCDateStr(String dateText){
        if (StringUtils.isBlank(dateText)){
            return null;
        }
        if (!"Z".equalsIgnoreCase(dateText.substring(dateText.length()-1))){
            dateText = dateText+"Z";
        }
        // 格式
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        String dateStr = null;
        try {
            dateStr = new SimpleDateFormat(DEFAULT_PATTERN).format(formatter.parse(dateText));
        } catch (ParseException e) {
            log.warn("getUTCDate方法日期转换异常:"+dateText);
        }
        return dateStr;
    }
    /**
     * 日期比较
     * @param startDateTime
     * @param endDateTime
     * @return
     * startDateTime<endDateTime 返回 1
     * startDateTime>endDateTime 返回 -1
     * startDateTime=endDateTime 返回 0
     */
    public static Integer dateCompare(Date startDateTime,String endDateTime){
        if (startDateTime == null || endDateTime == null){
            return 0;
        }
        Date suspendEndDateTime = DateUtils.stringToDate(endDateTime,DEFAULT_PATTERN);
        if (startDateTime == null || suspendEndDateTime == null){
            return 0;
        }
        return suspendEndDateTime.compareTo(startDateTime);
    }
    /**
     * 计算相差秒数
     * @param startTime
     * @param endTime
     * @return
     */
    public static long timeDifferenceSecond(String startTime,String endTime){
        try {
            Date startDate = new SimpleDateFormat(DEFAULT_PATTERN).parse(startTime);
            Date endDate = new SimpleDateFormat(DEFAULT_PATTERN).parse(endTime);
            long startSecond = startDate.getTime()/1000;
            long endSecond = endDate.getTime()/1000;
            return endSecond-startSecond;
        } catch (ParseException e) {
            log.warn(e.getMessage(),e);
        }
        return 0;
    }
    /**
     * 计算两个日期之间相差天数(只按照日期来算)
     *
     * @param endDate
     * @return
     */
    public static Long LocalDateDifferenceDay(Date startDate,Date endDate) {
        SimpleDateFormat formatter = new SimpleDateFormat(DEFAULT_PATTERN);
        try {
            LocalDate endLocalDate = endDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
            LocalDate startLocalDate = startDate.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
            return endLocalDate.toEpochDay() - startLocalDate.toEpochDay();
        } catch (Exception e) {
            log.error(formatter.format(endDate) + "转换为LocalDate异常:" + e.getMessage(), e);
        }
        return null;
    }
}

原文链接: https://www.yukx.com/javadev/article/details/2335.html 优科学习网日期常用转换、计算工具类 DateUtils

<<上一课程
下一课程>>
推荐文章
  • 什么是高并发?高并发(HighConcurrency)是一种系统运行过程中遇到的一种“短时间内遇到大量操作请求”的情况,主要发生在web系统集中大量访问收到大量请求(例如:12306的抢票情况;天猫双十一活动)。该情况的发生会导致系统在这段时间内执行大量操作,例如对资源的请求,数据库的操作等。高并发
  • 首先就是创建一个普通的Java工程,起名TrySpring,最终项目如下图:然后在创建两个包分别为service、spring。service用来存放bean、配置类等,spring包用来存放我们手撸的spring注解等在service中创建UserService类,再创建Test类,在Test类中
  •      AQS(AbstractQueuedSynchronizer)是一个抽象的队列同步器,通过维护一个共享资源状态(VolatileIntState)和一个先进先出(FIFO)的线程等待队列来实现一个多线程访问共享资源的同步框架。一、AQS原理     AQS为每个共享资源都设置一个共享资源锁
  • word-break:break-all举例一般情况下,元素拥有默认的white-space:normal(自动换行,PS:不换行是white-space:nowrap),当录入的文字超过定义的宽度后会自动换行,但当录入的数据是一堆没有空格的字符或字母或数字(常规数据应该不会有吧,但有些测试人员是会
  • Bigdecimal的初始化这里对比了两种形式,第一种直接value写数字的值,第二种用string来表示        BigDecimal num1 = new BigDecimal(0.005);         BigDecimal num2 = new BigDecimal(1000000
  • 基本概念定义 双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。双亲委派机制双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载
学习大纲