java指定日期转特定格式工具类

本文介绍了如何在Java中使用DateUtils工具类进行日期格式的转换,包括字符串日期转日期时间、获取年月日时分秒等,并提供了相关测试方法和实例。
摘要由CSDN通过智能技术生成

java指定日期转特定格式工具类


一、运行效果

字符串日期转日期时间:Sat Jan 20 00:00:00 CST 2024
年月日时分秒:2024-01-15 15:10:23
年月日:2024-01-15
年月日:20240115
年月:2024-01
年月:202401:2024:01
指定日期加月数:2024-03-15 15:10:23
相隔天数:5

Process finished with exit code 0

二、main测试方法

DateMain.java代码如下:

import java.util.Date;

public class DateMain {
    public static void main(String[] args) {

        // 字符串日期转日期时间
        String str = "2024-01-20";
        Date date = DateUtils.toDate(str,DateUtils.YYYY_MM_DD); // 这里可以指定任意类型的字符串时间
        System.out.println("字符串日期转日期时间:"+date);

        // 获取年月日时分秒
        String dateToStr = DateUtils.dateToStr(new Date());
        System.out.println("年月日时分秒:"+dateToStr);

        // 获取年月日
        String dateToYYYY_MM_DD = DateUtils.dateToYYYY_MM_DD(new Date());
        System.out.println("年月日:"+dateToYYYY_MM_DD);

        // 获取年月日
        String dateToYYYYMMDD = DateUtils.dateToYYYYMMDD(new Date());
        System.out.println("年月日:"+dateToYYYYMMDD);

        // 获取年月
        String dateToYYYY_MM = DateUtils.dateToYYYY_MM(new Date());
        System.out.println("年月:"+dateToYYYY_MM);

        // 获取年月
        String dateToYYYYMM = DateUtils.dateToYYYYMM(new Date());
        System.out.println("年月:"+dateToYYYYMM);

        // 获取年
        String dateToYYYY = DateUtils.dateToYYYY(new Date());
        System.out.println("年:"+dateToYYYY);

        // 获取月
        String dateToMM = DateUtils.dateToMM(new Date());
        System.out.println("月:"+dateToMM);

        // 给指定日期加月数,当前月2024-01 + 02 = 2024-03
        String subMonths = DateUtils.changeDateMonth(new Date(),2);
        System.out.println("指定日期加月数:"+subMonths);

        // 指定两个日期相减计算相隔天数
        String base = "2024-01-20";
        Date date1 = DateUtils.toDate(base,DateUtils.YYYY_MM_DD);
        System.out.println("相隔天数:"+DateUtils.getSubDays(new Date(),date1));
    }
}

三、工具类

工具类DateUtils.java代码如下:

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

/**
 * 时间工具类
 */
public class DateUtils {

    public static final String YYYY_MM_DD_HH_MI_SS = "yyyy-MM-dd HH:mm:ss";
    public static final String YYYY_MM_DD = "yyyy-MM-dd";
    public static final String YYYYMMDD = "yyyyMMdd";
    public static final String YYYYMM = "yyyyMM";
    public static final String YYYY_MM = "yyyy-MM";
    public static final String YYYY = "yyyy";
    public static final String MM = "MM";

    /**
     * 获取年月日时分秒:2023-12-01 14:08:57
     * @param d
     * @return
     */
    public static String dateToStr(Date d) {
        return toString(d, YYYY_MM_DD_HH_MI_SS);
    }

    /**
     * 获取年月日:2023-12-01
     * @param d
     * @return
     */
    public static String dateToYYYY_MM_DD(Date d) {
        return toString(d, YYYY_MM_DD);
    }

    /**
     * 获取年月日:20231201
     * @param d
     * @return
     */
    public static String dateToYYYYMMDD(Date d) {
        return toString(d, YYYYMMDD);
    }

    /**
     * 获取年月:2023_12
     * @param d
     * @return
     */
    public static String dateToYYYY_MM(Date d) {
        return toString(d, YYYY_MM);
    }

    /**
     * 获取年月:202312
     * @param d
     * @return
     */
    public static String dateToYYYYMM(Date d) {
        return toString(d, YYYYMM);
    }

    /**
     * 获取年:2023
     * @param d
     * @return
     */
    public static String dateToYYYY(Date d) {
    	return toString(d, YYYY);
    }

    /**
     * 获取月:12
     * @param d
     * @return
     */
    public static String dateToMM(Date d) {
    	return toString(d, MM); 
    }

    /**
     * 特定日期格式转换成字符类型
     * @param d
     * @param pattern
     * @return
     */
    private static String toString(Date d, String pattern) {
        if(d == null){
            return null;
        }
        SimpleDateFormat format = new SimpleDateFormat(pattern);
        return format.format(d);
    }

    /**
     * 特定字符转日期时间
     * @param dateString
     * @param pattern
     * @return
     * @throws ParseException
     */
    public static Date toDate(String dateString, String pattern){
        // 默认当前时间
        Date date = new Date();
        try{
            SimpleDateFormat format = new SimpleDateFormat(pattern);
            date = format.parse(dateString);
        }catch (Exception e){
            e.printStackTrace();
        }
        return date;
    }

    /**
     * 指定两个日期相减计算相隔天数
     * @param d1
     * @param d2
     * @return
     */
    public static int getSubDays(Date d1, Date d2) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(d1);
        Calendar c2 = Calendar.getInstance();
        c2.setTime(d2);
        return c2.get(Calendar.DAY_OF_YEAR) - c1.get(Calendar.DAY_OF_YEAR);
    }

    /**
     * 给指定日期加月数
     * @param d1
     * @param
     * @return
     */
    public static String changeDateMonth(Date d1, int month) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(d1);
        c1.add(Calendar.MONTH,month);
        Date date = c1.getTime();
        // 将加了月份的日期转换成年月日时分秒类型的,这里也可以自定义时间格式
        return dateToStr(date);
    }

}

总结

日常开发工作中用到的日期转换基本就是以上这些,DateUtils工具类可以拷贝复制到项目中直接使用。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不称职的程序员❦

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值