java1.8新特性Time包时间工具类,获取每月最后一天日期,LocalDateTime转Date对象

1.8的Time包有几个时间相关的对象:

import java.time.*;

public class TimeUnit {
    public static void main(String[] args) {
        /**
         * LocalDate 即日期,如 "2020-02-02"
         * LocalTime 即时间,如 "05:05:02"
         * LocalDateTime 即日期时间,如 "2020-02-02 05:05:02"
         * MonthDay 即月天,如 "--05-02"
         * 以下为几个对象的实例化方式,还有of(...)方式等。
         * 各个对象之间还可以相互转换,可参考1.8文档
         */
        LocalDate localDate1 = LocalDate.now();
        LocalDate localDate2 = LocalDate.parse("2020-02-02");
        LocalTime localTime1 = LocalTime.now();
        LocalTime localTime2 = LocalTime.parse("05:05:02");
        LocalDateTime localDateTime1 = LocalDateTime.now();
        LocalDateTime localDateTime2 = LocalDateTime.parse("2020-02-02 05:05:02");
        LocalDateTime localDateTime3 = LocalDateTime.of(localDate1, localTime1);
    }
}

以下为获取每月最后一天日期,LocalDateTime转Date对象等工具类:

还有待完善。。。。。。

import org.apache.commons.lang3.StringUtils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.temporal.ChronoField;
import java.util.Date;

public class TimeUnit {

    /**
     * 根据LocalDateTime对象转成时间类型
     * @param localDateTime
     * @return
     */
    public static Date localDateTimeToDate(LocalDateTime localDateTime) {
        return stringToDate(localDateTime.toString(), "yyyy-MM-dd'T'HH:mm:ss");
    }

    /**
     * 根据给定日期,获取该月最后一天
     * @param yearMonthDay "2020-02-02 02:02:02" 或者 "2020-02-02",不传就默认当天
     * @return 该月最后一天
     */
    public static String getMonthLastDay(String yearMonthDay) {
        LocalDate localDate;
        if (StringUtils.isNotBlank(yearMonthDay)) {
            if (yearMonthDay.contains(":")) {
                LocalDateTime localDateTime = LocalDateTime.parse(yearMonthDay);
                localDate = localDateTime.toLocalDate();
            } else {
                localDate = LocalDate.parse(yearMonthDay);
            }
        } else {
            localDate = LocalDate.now();
        }
        // 拿到本月最后一天的号数,如31号等
        long lastDay = localDate.range(ChronoField.DAY_OF_MONTH).getMaximum();
        // 计算当天与最后一天的天数差
        int offset = ((int) lastDay) - localDate.getDayOfMonth();
        // 在当天基础上加上天数差得到最后一天的日期
        return localDate.plusDays(offset).toString();
    }

    /**
     * 根据指定格式转成时间类型
     * @param timeStr
     * @param pattern
     * @return
     */
    public static Date stringToDate(String timeStr, String pattern) {
        try {
            SimpleDateFormat format = new SimpleDateFormat(pattern);
            return format.parse(timeStr);
        } catch (ParseException e) {
            return null;
        }
    }

    /**
     * 根据"yyyy-MM-dd HH:mm:ss"格式转成时间类型
     * @param timeStr
     * @return
     */
    public static Date stringToDate(String timeStr) {
        try {
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return format.parse(timeStr);
        } catch (ParseException e) {
            return null;
        }
    }
}


版权声明:本文为L9009121314原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。