java8新时间日期工具类

一个统计时间周期的工具类,包含获得给定时间一天、一周、一月、一年的开始和结束时间,以及时间格式化为字符串,字符串解析为时间。

/**
 * 时间处理工具类
 * @author 别人家的孩子e
 */
public class TimeUtil {

    /**
     * 按给定的格式,解析日期字符串
     */
    public static LocalDateTime convertDatetimeString(String date,String format){
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDateTime.parse(date,formatter);
    }

    /**
     * 按给定的格式,解析日期字符串
     */
    public static LocalDate convertDateString(String date,String format){
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        return LocalDate.parse(date,formatter);
    }

    /**
     * 按给定的格式,格式化给定的日期
     */
    public static String formatTime(LocalDateTime date,String format){
        return DateTimeFormatter.ofPattern(format).format(date);
    }

    /**
     * 按给定的格式,格式化给定的日期
     */
    public static String formatTime(LocalDate date,String format){
        return DateTimeFormatter.ofPattern(format).format(date);
    }

    /**
     * 获得给定天的开始
     */
    public static LocalDateTime getDayStart(LocalDateTime date){
        return LocalDateTime.of(date.toLocalDate(),LocalTime.MIN);
    }

    /**
     * 获得给定天的结束
     */
    public static LocalDateTime getDayEnd(LocalDateTime date){
        return LocalDateTime.of(date.toLocalDate(),LocalTime.MAX);
    }

    /**
     * 获得日期所在周开始, 周期为周一 - 周日
     */
    public static LocalDateTime getChinaWeekStart(LocalDateTime date){
        return LocalDateTime.of(date.toLocalDate().with(DayOfWeek.MONDAY),LocalTime.MIN);
    }

    /**
     * 获得日期所在周结束, 周期为周一 - 周日
     */
    public static LocalDateTime getChinaWeekEnd(LocalDateTime date){
        return LocalDateTime.of(date.toLocalDate().with(DayOfWeek.SUNDAY),LocalTime.MAX);
    }

    /**
     * 获得日期所在周开始, 周期为周日 - 周六
     */
    public static LocalDateTime getWeekStart(LocalDateTime date){
       //获得当前日期所在周的周日
        LocalDate sunday = date.toLocalDate().with(DayOfWeek.SUNDAY);
        if(sunday.equals(date.toLocalDate())){
            //当前就是周日
            return LocalDateTime.of(sunday,LocalTime.MIN);
        }else {
            //获取上周日开始
            return LocalDateTime.of(date.minusWeeks(1).with(DayOfWeek.SUNDAY).toLocalDate(),LocalTime.MIN);
        }
    }

    /**
     * 获得日期所在周结束, 周期为周日 - 周六
     */
    public static LocalDateTime getWeekEnd(LocalDateTime date){
        //获得当前日期所在周的周日
        LocalDate sunday = date.toLocalDate().with(DayOfWeek.SUNDAY);
        if (sunday.equals(date.toLocalDate())){
            //获得下周六
            return LocalDateTime.of(date.plusWeeks(1).with(DayOfWeek.SATURDAY).toLocalDate(),LocalTime.MAX);
        }else {
            //获得本周六
            return LocalDateTime.of(date.with(DayOfWeek.SATURDAY).toLocalDate(),LocalTime.MAX);
        }
    }

    /**
     * 获得日期所在月开始
     */
    public static LocalDateTime getMonthStart(LocalDateTime date){
        LocalDate time = date.toLocalDate().with(TemporalAdjusters.firstDayOfMonth());
        return LocalDateTime.of(time,LocalTime.MIN);
    }

    /**
     * 获得日期所在月结束
     */
    public static LocalDateTime getMonthEnd(LocalDateTime date){
        LocalDate time = date.toLocalDate().with(TemporalAdjusters.lastDayOfMonth());
        return LocalDateTime.of(time,LocalTime.MAX);
    }

    /**
     * 获得日期所在年开始
     */
    public static LocalDateTime getYearStart(LocalDateTime date){
        LocalDate time = date.toLocalDate().with(TemporalAdjusters.firstDayOfYear());
        return LocalDateTime.of(time,LocalTime.MIN);
    }

    /**
     * 获得日期所在年结束
     */
    public static LocalDateTime getYearEnd(LocalDateTime date){
        LocalDate time = date.toLocalDate().with(TemporalAdjusters.lastDayOfYear());
        return LocalDateTime.of(time,LocalTime.MAX);
    }

    public static void main(String[] args) {
        //指定年月日时分秒
        LocalDateTime dateTime = LocalDateTime.of(2024, 1, 4, 11, 12, 12);
        //指定年月日
        LocalDate date = LocalDate.of(2023, 11, 11);
        //dateTime减去一天
        System.out.println(formatTime(dateTime.plusDays(-1),"yyyy-MM-dd HH:mm:ss"));
        //dateTime增加一周
        System.out.println(formatTime(dateTime.plusWeeks(1),"yyyy-MM-dd HH:mm:ss"));
        //date减去一月
        System.out.println(formatTime(date.plusMonths(-1),"yyyy-MM-dd"));
        //date增加一年
        System.out.println(formatTime(date.plusYears(1),"yyyy-MM-dd"));
    }

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值