java——LocalDateTime ツール クラス

LocalDateTime の簡単な紹介:

Java が従来から使用してきた日付型は Date クラスと Calendar クラスですが、あまり使い勝手が良くなく、Date クラスにはスレッドのセキュリティの問題があると言われています。同時に、使用するたびに包装する必要があり、使用時に特に面倒である。そのため、スレッドセーフでシンプルかつ信頼性の高い時刻パッケージが Java-8 に登場しました。また、データベースでは LocalDateTime 型もサポートされているため、データを保存する際の時間が簡単になります。新しくリリースされた Java8 には、LocalDateTime 年、月、日、10 分の 1 秒、LocalDate 日付、LocalTime 時刻の 3 つの関連する時刻タイプが含まれており、3 つのパッケージのメソッドは似ています。

以下は、LocalDateTime カプセル化のための比較的包括的なツール クラスです。

import org.springframework.util.StringUtils;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.time.temporal.TemporalAdjusters;

/**
 * @Author :feiyang
 * @Date :Created in 2019/5/15
 */
public class LocalDateTimeUtil {
    /**
     * 将Long类型的时间戳转换成String 类型的时间格式,时间格式为:yyyy-MM-dd HH:mm:ss
     */
    public static String convertTimeToString(Long time){
        if (StringUtils.isEmpty(time)){
            return null;
        }
        DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        return ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault()));
    }

    /**
     * 将Long类型的时间戳转换成String 类型的时间格式,时间格式为:yyyy-MM-dd
     */
    public static String convertTimeToStringYMD(Long time){
        if (StringUtils.isEmpty(time)){
            return null;
        }
        DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        return ftf.format(LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault()));
    }


    /**
     * 将字符串转日期成Long类型的时间戳,格式为:yyyy-MM-dd HH:mm:ss
     */
    public static Long convertTimeToLong(String time) {
        if (StringUtils.isEmpty(time)){
            throw new IllegalArgumentException("时间参数异常!");
        }
        DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime parse = LocalDateTime.parse(time, ftf);
        return LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    /**
     * 将字符串转日期成Long类型的时间戳,格式为:yyyy-MM-dd
     */
    public static Long convertTimeToLongYMD(String time) {
        if (StringUtils.isEmpty(time)){
            throw new IllegalArgumentException("时间参数异常!");
        }
        DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDateTime parse = LocalDateTime.parse(time, ftf);
        return LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }

    /**
     * 将日期转换为字符串,格式为:yyyy-MM-dd HH:mm:ss
     * @param localDateTime
     * @return
     */
    public static  String convertDateToString(LocalDateTime localDateTime){
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        String dateTime = dtf.format(localDateTime);
        return dateTime;
    }

    /**
     * 将日期转换为字符串,格式为:yyyy-MM-dd
     * @param localDateTime
     * @return
     */
    public static  String convertDateToStringYMD(LocalDateTime localDateTime){
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String dateTime = dtf.format(localDateTime);
        return dateTime;
    }

    /**
     * 将字符串转换为日期,格式为:yyyy-MM-dd HH:mm:ss
     * @param time
     * @return
     */
    public static LocalDateTime convertStringToDate(String time){
        DateTimeFormatter dft = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime dateTime = LocalDateTime.parse(time, dft);
        return dateTime;
    }

    /**
     * 将字符串转换为日期,格式为:yyyy-MM-dd
     * @param time
     * @return
     */
    public static LocalDateTime convertStringToDateYMD(String time){
        DateTimeFormatter dft = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        LocalDateTime dateTime = LocalDateTime.parse(time, dft);
        return dateTime;
    }

    /**
     * 取本月第一天
     */
    public static LocalDate firstDayOfThisMonth() {
        LocalDate today = LocalDate.now();
        return today.with(TemporalAdjusters.firstDayOfMonth());
    }

    /**
     * 取本月第N天
     */
    public static LocalDate dayOfThisMonth(int n) {
        LocalDate today = LocalDate.now();
        return today.withDayOfMonth(n);
    }

    /**
     * 取本月最后一天
     */
    public static LocalDate lastDayOfThisMonth() {
        LocalDate today = LocalDate.now();
        return today.with(TemporalAdjusters.lastDayOfMonth());
    }

    /**
     * 取本月第一天的开始时间
     */
    public static LocalDateTime startOfThisMonth() {
        return LocalDateTime.of(firstDayOfThisMonth(), LocalTime.MIN);
    }


    /**
     * 取本月最后一天的结束时间
     */
    public static LocalDateTime endOfThisMonth() {
        return LocalDateTime.of(lastDayOfThisMonth(), LocalTime.MAX);
    }
}

 

おすすめ

転載: blog.csdn.net/qq_42133100/article/details/90239930