常用日期时间工具总结

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参考文档

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值