首页 > 编程语言 >java 日期工具类

java 日期工具类

时间:2023-02-13 18:24:18浏览次数:38  
标签:return Date 日期 static calendar date java 工具 public

package com.jd.rc.custom.oper.bff.common;

import com.jd.fastbe.framework.client.support.exception.BusinessException;
import com.jd.fastbe.framework.client.support.exception.DefaultErrorCodeEnum;
import org.apache.commons.lang3.StringUtils;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 时间转换工具
 *
 * @author jialong12
 * @date 2021-10-14 21:57
 */
public class DateUtils {

    public static final String MM_dd = "MM-dd";
    public static final String HH_mm = "HH:mm";
    public static final String MM_dd2 = "MM/dd";
    private static final String yyyy_MM_dd = "yyyy-MM-dd";
    public static final String HH = "HH";
    public static final String YYYY_MM_DD = "yyyy-MM-dd";
    private static final String yyyy_MM_dd_HH_mm_ss = "yyyy-MM-dd HH:mm:ss";

    private static final String yyyy_MM_dd_HH = "yyyy-MM-dd HH";
    /**
     * 一天的毫秒
     */
    private static final long DAY_MILLS = 1000 * 24 * 3600;

    /**
     * 解析字符串时间为Date类型
     *
     * @param dateStr 时间
     * @return 时间
     */
    public static Date parse(String dateStr, String pattern) {
        if (StringUtils.isBlank(dateStr)) {
            return null;
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        try {
            return sdf.parse(dateStr);
        } catch (Exception e) {
            throw new BusinessException(DefaultErrorCodeEnum.BAD_ARGUMENT_ERROR, "时间格式有误", e);
        }
    }

    /**
     * 转换时间为字符串格式
     *
     * @param date 时间
     * @return 时间
     */
    public static String format(Date date, String pattern) {
        if (date == null) {
            return null;
        }
        return new SimpleDateFormat(pattern).format(date);
    }

    public static Date parseDate(String dateStr) {
        return parse(dateStr, yyyy_MM_dd);
    }

    public static String formatDate(Date date) {
        return format(date, yyyy_MM_dd);
    }

    public static String formatDateTime(Date date) {
        return format(date, yyyy_MM_dd_HH_mm_ss);
    }

    public static String formatDateHH(Date date) {
        return format(date, yyyy_MM_dd_HH);
    }

    public static Date parseDateTime(String dateStr) {
        return parse(dateStr, yyyy_MM_dd_HH_mm_ss);
    }

    public static Date parseDateHH(String dateStr) {
        return parse(dateStr, yyyy_MM_dd_HH);
    }

    public static Date parseHH(String dateStr) {
        return parse(dateStr, HH);
    }

    /**
     * 结束时间大于等于开始时间
     */
    public static boolean dateGt(Date after, Date before) {
        return after.getTime() >= before.getTime();
    }

    /**
     * 时间设置为 23:59:59
     */
    public static Date setEndTime(Date date) {
        if (date == null) {
            return null;
        }

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTime();
    }

    /**
     * 时间设置为 00:00:00
     */
    public static Date setStartTime(Date date) {
        if (date == null) {
            return null;
        }

        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTime();
    }

    /**
     * 时间后
     *
     * @param date 当前时间
     * @param days 如果为正数,则是多少天后,负数则为多少天前
     * @return 日期
     */
    public static Date after(Date date, int days) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);

        calendar.add(Calendar.DAY_OF_YEAR, days);

        return calendar.getTime();
    }


    /**
     * 计算相差天数
     *
     * @param before 之前时间
     * @param after  之后时间
     * @return 天数
     */
    public static int days(Date before, Date after) {
        // 天数
        return ((int) ((after.getTime() - setStartTime(before).getTime()) / DAY_MILLS)) + 1;
    }

    public static void main(String[] args) {
        Date date = DateUtils.parseDate("2022-07-30");
        System.out.println(formatDate(after(date, -1)));
        System.out.println(formatDate(after(date, -1)));
        System.out.println(formatDate(after(date, -1)));
        System.out.println(formatDate(after(date, -1)));
    }

    //获取前、后month个月时间
    public static Date getDateBefore3Month(Date dNow, Integer month) {

        if (dNow == null) {
            return null;
        }

        Calendar calendar = Calendar.getInstance(); //得到日历
        calendar.setTime(dNow);//把当前时间赋给日历
        calendar.add(Calendar.MONTH, month);  //设置为前3月
        return calendar.getTime();   //得到前3月的时间
    }
}

 

标签:return,Date,日期,static,calendar,date,java,工具,public
From: https://www.cnblogs.com/niun/p/17117299.html

相关文章

  • 30个Javascript知识点总结,总有你不会的!
    最近重温了一遍红宝书,发现一些比较好玩的写法,很多东西日常都在用,但是发现还会有不一样的写法,结合一些日常工作中使用的方法,为大家总结一篇日常经常使用可能还不知道的点,希......
  • 瓴羊Quick BI报表分析工具,专业数据分析人员的“神辅助”
    在如今的企业中,数据的重要性不言而喻。无论是从事哪种行业,规模大小如何,现代企业几乎都会用到数据分析来做管理决策。可以说,数据分析已经成为了企业运行不可或缺的基础。正因......
  • Java 生成 32位 UUID
    Java生成32位UUIDUUID:UniversallyUniqueIdentifier通用唯一识别码现在很多数据库的主键id,由原来的int自增,改为UUID表示。因为UUID本身不可能重复,线程安全,完美......
  • java面试题(五)
    1.1为什么Java代码可以实现一次编写、到处运行?参考答案JVM(Java虚拟机)是Java跨平台的关键。在程序运行前,Java源代码(.java)需要经过编译器编译成字节码(.class)。在程序运行时,JV......
  • java面试题(六)
    1.11int和Integer有什么区别,二者在做==运算时会得到什么结果?参考答案int是基本数据类型,Integer是int的包装类。二者在做==运算时,Integer会自动拆箱为int类型,然后再进行比较......
  • Java Stream分组groupBy后,取某个字段值为字符串或者list
    某个字段值为字符串List<User>userList=newArrayList();Map<String,String>collect=userList.stream().collect(Collectors.groupingBy(User:......
  • Java面向对象部分思维导图
         ......
  • 安卓混淆加固重签名工具1.7.7更新(附下载地址)
    安卓APK混淆加密重签名软件,可以对安卓APP进行混淆加固加密处理,对代码和资源文件进行混淆,进行重新签名等.  可以保护APK,增加逆向分析难度,防止误报毒等.   安卓......
  • ChatGPT:用java写G711a转AAC的代码
    //Importnecessarylibrariesimportjava.io.File;importjavax.sound.sampled.AudioFormat;importjavax.sound.sampled.AudioInputStream;importjavax.sound.sam......
  • MobPush 助力工具 APP 激活用户,留存率提升 31%
    近几年里,吸引用户注意力的争夺在内容资讯行业十分激烈。在此背景下,能吸引用户注意力,能够高效连接内容与用户的APP将发挥出更大的增长潜力。近期,某工具APP与MobTech携......