常用日期时间工具总结

1、Java1.8引入的时间调节器类:TemporalAdjusters

import java.time.DayOfWeek;
import java.time.LocalDateTime;
import java.time.temporal.TemporalAdjusters;
import java.time.temporal.ChronoUnit;

/**
 * @Auther: 
 * @Description: 时间调节器类
 */
public class TemporalAdjusterTest {

    public static void main(String[] args) {
        LocalDateTime now = LocalDateTime.now();
        //获取当月第一天
        System.out.println("当月第一天:"+now.with(TemporalAdjusters.firstDayOfMonth()));
        //获取下月第一天
        System.out.println("下月第一天:"+now.with(TemporalAdjusters.firstDayOfNextMonth()));
        //获取明年第一天
        System.out.println("明年第一天:"+now.with(TemporalAdjusters.firstDayOfNextYear()));
        //获取本年第一天
        System.out.println("本年第一天:"+now.with(TemporalAdjusters.firstDayOfYear()));
        //获取当月最后一天
        System.out.println("当月最后一天:"+now.with(TemporalAdjusters.lastDayOfMonth()));
        //获取本年最后一天
        System.out.println("本年最后一天:"+now.with(TemporalAdjusters.lastDayOfYear()));
        //获取当月第三周星期五
        System.out.println("当月第三周星期五:"+now.with(TemporalAdjusters.dayOfWeekInMonth(3, DayOfWeek.FRIDAY)));
        //获取上周一
        System.out.println("上周一:"+now.with(TemporalAdjusters.previous(DayOfWeek.MONDAY)));
        //获取下周日
        System.out.println("下周日:"+now.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)));
        //minus 获取上个月最后一天
        System.out.println("上个月最后一天:"+now.minus(1, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()));
        //plus 获取下个月最后一天
        System.out.println("下个月最后一天:"+now.plus(1, ChronoUnit.MONTHS).with(TemporalAdjusters.lastDayOfMonth()));
    }
}

2、自定义的

    /**
     * 获取指定日期当月的第一天
     * @param dateStr
     * @param format
     * @return
     */
    public static String getFirstDayOfGivenMonth(String dateStr,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date = sdf.parse(dateStr);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH,1);
            calendar.add(Calendar.MONTH, 0);
            return sdf.format(calendar.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 获取指定日期下个月的第一天
     * @param dateStr
     * @param format
     * @return
     */
    public static String getFirstDayOfNextMonth(String dateStr,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date = sdf.parse(dateStr);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH,1);
            calendar.add(Calendar.MONTH, 1);
            return sdf.format(calendar.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 把指定日期的年份 + 1,月日不变
     * @param dateStr
     * @param format
     * @return
     */
    public static String getAppointDayOfNextYear(String dateStr,String format){
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        try {
            Date date = sdf.parse(dateStr);
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);
            calendar.set(Calendar.DAY_OF_MONTH,1);
            calendar.add(Calendar.YEAR, 1);
            return sdf.format(calendar.getTime());
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args){
        System.out.println(getAppointDayOfNextYear("2020-01-01", "yyyy-MM-dd"));
        System.out.println(getFirstDayOfNextMonth("2022-12-04", "yyyy-MM-dd"));
        System.out.println(getFirstDayOfGivenMonth("2021-02-27", "yyyy-MM-dd"));
    }

3、Hutool工具包:DateUtil

        具体使用可参考官方API:Hutool参考文档

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