SpringBoot--手写日期格式转换工具类
原文网址:SpringBoot--手写日期格式转换工具类-CSDN博客
简介
本文介绍SpringBoot的手写日期格式化工具类。
实际上本工具类可以用于所有Java项目,不是SpringBoot的也可以。
问题描述
在实际开发中经常会需要日期的格式转换,比如:字符串解析为LocalDateTime、字符串解析为Date、LocalDateTime转Date等。
将其整理为一个工具类,可以方便地调用。(虽然hutool有类似的工具,但由于此工具bug太多,非常不建议使用)。
核心代码
常量
package com.knife.example.common.core.constant;public interface DateTimeFormatConstant {String DATE_TIME_FORMAT_NORMAL = "yyyy-MM-dd HH:mm:ss";String DATE_FORMAT_NORMAL = "yyyy-MM-dd";String TIME_FORMAT_NORMAL = "HH:mm:ss";
}
工具类
package com.knife.example.common.core.util;import com.knife.example.common.core.constant.DateTimeFormatConstant;import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Date;public class DateTimeUtil {/*** 格式化** @param localDateTime 时间* @param format 格式。见{@link DateTimeFormatConstant}*/public static String format(LocalDateTime localDateTime,String format) {return localDateTime.format(DateTimeFormatter.ofPattern(format));}public static String format(LocalDate localDate,String format) {return localDate.format(DateTimeFormatter.ofPattern(format));}public static String format(LocalTime localTime,String format) {return localTime.format(DateTimeFormatter.ofPattern(format));}public static LocalDateTime parseToLocalDateTime(String localDateTimeString,String format) {return LocalDateTime.parse(localDateTimeString, DateTimeFormatter.ofPattern(format));}public static LocalDate parseToLocalDate(String localDateString,String format) {return LocalDate.parse(localDateString, DateTimeFormatter.ofPattern(format));}public static LocalTime parseToLocalTime(String localTimeString,String format) {return LocalTime.parse(localTimeString, DateTimeFormatter.ofPattern(format));}public static LocalDateTime toLocalLocalDateTime(Date date) {return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();}public static LocalDate toLocalDate(Date date) {return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();}public static LocalTime toLocalTime(Date date) {return date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();}public static Date toDate(LocalDateTime localDateTime) {return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());}public static Date toDate(LocalDate localDate) {return Date.from(localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant());}public static Long toTimeStamp(LocalDateTime localDateTime) {return localDateTime.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();}public static Long toTimeStamp(LocalDate localDate) {return localDate.atStartOfDay().atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();}public static LocalDateTime toLocalDateTime(Long timeStamp) {return LocalDateTime.ofInstant(Instant.ofEpochMilli(timeStamp),ZoneId.systemDefault());}public static LocalDate toLocalDate(Long timeStamp) {return LocalDateTime.ofInstant(Instant.ofEpochMilli(timeStamp),ZoneId.systemDefault()).toLocalDate();}// public static void main(String[] args) {// String format = format(LocalDateTime.now(), DateTimeFormatConstant.DATE_TIME_FORMAT_NORMAL);// System.out.println(format);// }
}
用法
String format = DateTimeUtil.format(LocalDateTime.now(), DateTimeFormatConstant.DATE_TIME_FORMAT_NORMAL);
System.out.println(format);