java日期的常用工具代码

概述

自己写的日期工具类,之后会再补充所有日期有关的功能吧。

代码

package com.cmft.marathon.basic.utils;

import lombok.extern.slf4j.Slf4j;
import java.time.YearMonth;
import java.time.format.DateTimeFormatter;

/**
 * 日期工具类
 * @author 
 * @since 2023/6/14 17:42
 */
@Slf4j
public class DateUtils {

    /**
     * 比较两个日期所在的月份大小,忽略日期部分
     *
     * @param date1 日期1
     * @param date2 日期2
     * @param date1Format 日期1的格式字符串
     * @param date2Format 日期2的格式字符串
     * @return 如果 date1 所属月份晚于 date2 所属月份,则返回 1;如果相同,则返回 0;否则返回 -1。
     */
    public static int compareMonth(String date1, String date2, String date1Format, String date2Format) {
        // 解析日期字符串为 LocalDate 对象
        DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern(date1Format);
        YearMonth yearMonth1 = YearMonth.parse(date1, formatter1);

        DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern(date2Format);
        YearMonth yearMonth2 = YearMonth.parse(date2, formatter2);

        // 比较年月信息
        if (yearMonth1.isAfter(yearMonth2)) {
            log.info("{}在{}之后",date1, date2);
            return 1;
        } else if (yearMonth1.isBefore(yearMonth2)) {
            log.info("{}在{}之前",date1, date2);
            return -1;
        } else {
            log.info("{}在{}当月",date1, date2);
            return 0;
        }
    }

}

测试

    /**
     * 测试日期
     */
    @Test
    public void compareDate(){
        String date = "2022年08月25日";
        int i = DateUtils.compareMonth(date, newExchangeAdjustNodeMonth, "yyyy年MM月dd日", "yyyy-MM");
        Assert.assertEquals(1,i);

        date = "2022年04月25日";
        int j = DateUtils.compareMonth(date, newExchangeAdjustNodeMonth, "yyyy年MM月dd日", "yyyy-MM");
        Assert.assertEquals(0,j);

        date = "2022年03月25日";
        int k = DateUtils.compareMonth(date, newExchangeAdjustNodeMonth, "yyyy年MM月dd日", "yyyy-MM");
        Assert.assertEquals(-1,k);

        date = "2023年03月25日";
        String date2 = "2022-04-08";
        int l = DateUtils.compareMonth(date, date2, "yyyy年MM月dd日", "yyyy-MM-dd");
        Assert.assertEquals(1,l);
    }

测试结果

在这里插入图片描述

代码片段2

从年日月格式的字符串中解析出年月,并比较

public static void main(String[] args) throws ParseException {
        SimpleDateFormat yearMonthFormat = new SimpleDateFormat("yyyy-MM");
        Date date = null;
        try {
            date = yearMonthFormat.parse("2022-05-01");
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
        String s = yearMonthFormat.format(date);
        System.out.println(s);

        if(date.before(yearMonthFormat.parse("2022-05-27"))){
            System.out.println("6666");
        } else if (date.equals(yearMonthFormat.parse("2022-05-27"))) {
            System.out.println("7777");
        } else{
            System.out.println("8888");
        }
    }

代码结果
在这里插入图片描述

你可能感兴趣的:(java,开发语言)