时间工具类

时间转换工具类

package com.wbc.demo.util;

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

/**
 * @author Tim
 * @Description
 * @create 2021-09-02 14:49
 */
public class DateUtil {

    /**
     * 获取传入时间的年
     * @param date
     * @return
     */
    public static int getYear(Date date) {
        return Integer.parseInt(parseString(date,"yyyy"));
    }

    /**
     * 获取传入时间的月份
     * @param date
     * @return
     */
    public static int getMonth(Date date) {
        return Integer.parseInt(parseString(date,"MM"));
    }

    /**
     * 获取传入时间的日期
     * @param date
     * @return
     */
    public static int getDay(Date date) {
        return Integer.parseInt(parseString(date,"dd"));
    }


    /**
     * 获取当前时间的年
     * @return
     */
    public static int thisYear() {
        return Integer.parseInt(now("yyyy"));
    }

    /**
     * 获取当前时间的 月
     * @return
     */
    public static int thisMonth() {
        return Integer.parseInt(now("MM"));
    }

    /**
     * 获取当前时间的 日期
     * @return
     */
    public static int thisDay() {
        return Integer.parseInt(now("dd"));
    }


    /**
     *
     * 获取当月 的下一个月1号
     * @return
     */
    public static String firstDayOfNextMonth() {
        return firstDayOfNextMonth(new Date());
    }

    /**
     * 获取传入日期的 下一个月1号
     * @param date
     * @return
     */
    public static String firstDayOfNextMonth(String date) {
        return firstDayOfNextMonth(parseDate(date));
    }

    /**
     * 获取传入日期的 下一个月1号
     * @param date
     * @return
     */
    public static String firstDayOfNextMonth(Date date) {
        int year = getYear(date);
        int month = getMonth(date);
        month++;

        if(month>13){
            throw new RuntimeException("month is error");
        }

        if(month==13){
            month = 1;
            year++;
        }

        String mon = "";
        if(month<10){
            mon = "0";
        }
        mon = mon + month;


        StringBuffer sb = new StringBuffer();
        sb.append(year);
        sb.append("-");
        sb.append(mon);
        sb.append("-01");
        return sb.toString();
    }


    /**
     * 获取传入月份的 1号
     * @param date
     * @return
     */
    public static String firstDayOfMonth(Date date) {
        return getFirstDayOfMonth(date);
    }

    /**
     * 获取传入月份的 1号
     * @param date
     * @return
     */
    public static String firstDayOfMonth(String date) {
        return getFirstDayOfMonth(date);
    }

    /**
     * 获取本月第一天
     * @return
     */
    public static String firstDayOfMonth() {
        return getFirstDayOfMonth(new Date());
    }

    /**
     * 获取传入月份的1号
     * @param obj 传入Date 或者 String
     * @return 传入时间的 1号
     */
    private static String getFirstDayOfMonth(Object obj) {
        String yearMonth = null;
        if(obj instanceof Date){
            yearMonth = parseString((Date) obj, "yyyy-MM");
        }

        if(obj instanceof String){
            yearMonth = ((String) obj).substring(0, 7);
        }

        return yearMonth+"-01";
    }


    /**
     *
     * @param dateString 传入时间 支持 年月日时分秒 格式  无视连接符
     * @return Date 类型的时间
     */
    public static Date parseDate(String dateString) {

        dateString = replaceInt(dateString);
        String pattern = "yyyyMMddHHmmss";

        if("".equals(dateString)){
            throw new RuntimeException("dateString is null or empty");
        }
        SimpleDateFormat sdf = new SimpleDateFormat(pattern.substring(0,dateString.length()));
        Date parse = null;
        try {
            parse = sdf.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return parse;
    }

    //传入的字符串只返回数字
    private static String replaceInt(String dateString) {
        StringBuilder sb = new StringBuilder();
        char[] chars = dateString.toCharArray();

        for (char aChar : chars) {
            if(aChar>47&&aChar<58){
                sb.append(aChar);
            }
        }
        return sb.toString();
    }

    private static String defaultFormat = "yyyy-MM-dd HH:mm:ss";

    /**
     * 获取当前时间 格式为 yyyy-MM-dd HH:mm:ss
     * @return 默认格式的当前时间
     */
    public static String now(){
        return parseString(new Date(),defaultFormat);
    }

    /**
     * 获取当前时间
     * @param format 自定义格式
     * @return 自定义格式的当前时间
     */
    public static String now(String format){
        return parseString(new Date(),format);
    }

    /**
     * 获取今天的年月日
     * @return
     */
    public static String today(){
        return parseString(new Date(),"yyyy-MM-dd");
    }

    /**
     * 自定义时间和格式
     * @param date 时间
     * @param format 格式
     * @return 自定义格式的字符串
     */
    public static String parseString(Date date,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        return sdf.format(date);
    }

    /**
     *
     * @param date 时间
     * @return 默认格式的字符串
     */
    public static String parseString(Date date){
        return parseString(date,defaultFormat);
    }


}

Demo类

package com.wbc.demo.util;

import java.util.Date;

public class TestDateUtil {

    public static void main(String[] args) {
        //获取当前时间
        System.out.println("获取当前时间:"+DateUtil.now());

        //获取今天
        System.out.println("获取今天:"+DateUtil.today());

        //获取今年
        System.out.println("获取今年:"+DateUtil.thisYear());

        //获取这个月
        System.out.println("获取这个月:"+DateUtil.thisMonth());

        //获取今天
        System.out.println("获取今天"+DateUtil.thisDay());

        // String 格式转换为 Date
        System.out.println("String 格式转换为 Date:"+DateUtil.parseDate("2010-12-12"));

        // Date 格式转换为 String
        System.out.println("Date 格式转换为 String:"+DateUtil.parseString(new Date()));
        System.out.println("Date 格式转换为 String:"+DateUtil.parseString(new Date(),"yyyy/MM/dd HH:mm:ss"));

        //获取指定日期的年 月 日
        Date date = DateUtil.parseDate("2010-12-12");
        System.out.println("获取传入日期的年:"+DateUtil.getYear(date));
        System.out.println("获取传入日期的月:"+DateUtil.getMonth(date));
        System.out.println("获取传入日期的日:"+DateUtil.getDay(date));


        //获取本月的1号日期
        System.out.println("获取本月的1号日期:"+DateUtil.firstDayOfMonth());
        System.out.println("获取传入日期的1号日期::"+DateUtil.firstDayOfMonth(new Date()));
        System.out.println("获取传入日期的1号日期:"+DateUtil.firstDayOfMonth("2021-02-01"));

        System.out.println("获取下个月的1号日期:"+DateUtil.firstDayOfNextMonth());
        System.out.println("获取传入日期的下个月的1号日期:"+DateUtil.firstDayOfNextMonth(new Date()));
        System.out.println("获取传入日期的下个月的1号日期:"+DateUtil.firstDayOfNextMonth("2021-12-12"));

    }
}

原文地址:https://www.cnblogs.com/wangbingchen/p/15313940.html