Java日期工具类操作字符串Date和LocalDate互转

网友投稿 965 2022-07-23


目录字符串转DateDate转字符串字符串转LocalDateDate转LocalDateLocalDate转字符串两个日期的时间差一天的开始和结束时间工具类

前言:

避免重复造轮子,相关方法基于hutool日期时间工具封装并做部分增强。需要先引入如下坐标

cn.hutool

hutool-all

5.4.7

字符串转Date

//字符串转Date

Date dateTime = DateUtil.parseDate("2022-04-06");

System.out.println(dateTime);

Date转字符串

//Date转字符串不指定format格式,默认yyyy-MM-dd HH:mm:ss

String dateStr = DateUtil.date2Str(new Date());

System.out.println(dateStr);

//Date转字符串指定格式

String dateStr2 = DateUtil.date2Str("yyyy/MM/dd",new Date());

System.out.println(dateStr2);

字符串转LocalDate

//字符串转LocalDate

LocalDate localDate = DateUtil.parseLocalDate("2022-04-06");

System.out.println(localDate);

Date转LocalDate

//Date转LocalDate

LocalDate localDate = DateUtil.date2LocalDate(new Date());

System.out.println(localDate);

LocalDate转字符串

//LocalDate转Str

String localDateStr = DateUtil.localDate2Str(LocalDate.now());

System.out.println(localDateStr);

两个日期的时间差

String beginDateStr = "2022-02-01 22:33:23";

Date beginDate = DateUtil.parse(beginDateStr);

String endDateStr = "2022-03-10 23:33:23";

Date endDate = DateUtil.parse(endDateStr);

//相差天数(37)

long betweenDay = DateUtil.between(beginDate, endDate, DateUnit.DAY);

System.out.println(betweenDay);

//格式化时间差(37天1小时)

String formatBetween = DateUtil.formatBetween(beginDate, endDate, BetweenFormater.Level.HOUR);

System.out.println(formatBetween);

一天的开始和结束时间

String dateStr = "2022-04-07 10:33:23";

DatkeuXMbvgpe date = DateUtil.parse(dateStr);

//一天的开始时间:2022-04-07 00:00:00

Date beginOfDay = DateUtil.beginOfDay(date);

System.out.println(beginOfDay);

//一天的结束时间:2022-04-07 23:59:59

Date endOfDay = DateUtil.endOfDay(date);

System.out.println(endOfDay);

工具类

/**

*

基于hutool的日期工具类增强

*

* @author zjq

* @date 2021/04/07

*/

public class DateUtil extends cn.hutool.core.date.DateUtil {

private static final String[] PARSE_PATTERNS = {

"yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",

"yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",

"yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};

public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");

public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd");

public static final DateTimeFormatter DATETIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

/**

* 字符串转date类型

*

* @param dateStr

* @return

*/

public static Date parseDate(Object dateStr) {

if (ObjectUtils.isNull(dateStr)) {

return null;

}

if (dateStr instanceof Double) {

return org.apache.poi.ss.usermodel.DateUtil.getjavaDate((Double) dateStr);

}

return parse(dateStr.toString(), PARSE_PATTERNS);

}

/**

* Date类型转字符串

*

* @param date

* @return yyyy-MM-dd HH:mm:ss

*/

public static String date2Str(Date date) {

return date2Str(null, date);

}

/**

* Date类型转字符串

*

* @param format

* @param date

* @return

*/

public static String date2Str(String format, Date date) {

if (ObjectUtils.isNull(date)) {

return null;

}

SimpleDateFormat dateFormat = StrUtil.isNotBlank(format) ?new SimpleDateFormat(format):

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

return dateFormat.format(date);

}

/**

* 字符串转LocalTime类型

*

* @param dateStr

* @return

*/

public static LocalTime parseLocalTime(Object dateStr) {

if (ObjectUtils.isNull(dateStr)) {

return null;

}

if (dateStr instanceof Double) {

return date2LocalTime(parseDate(dateStr));

}

return LocalTime.parse(dateStr.toString(), TIME_FORMATTER);

}

/**

* Date转LocalTime

*

* @param date

* @return

*/

public static LocalTime date2LocalTime(Date date) {

if (null == date) {

return null;

}

return date.toInstant().atZone(ZoneId.systemDefault()).toLocalTime();

}

/**

* LocalTime转Str

*

* @param localTime

* @return HH:mm:ss

*/

public static String localTime2Str(LocalTime localTime) {

return localTime2Str(null, localTime);

}

/**

* LocalTime转str

*

* @param format 格式

* @param localTime

* @return

*/

public static String localTime2Str(String format, LocalTime localTime) {

if (null == localTime) {

return null;

}

DateTimeFormatter formatter = StrUtil.isBlank(format) ?

TIME_FORMATTER : DateTimeFormatter.ofPattern(format);

return localTime.format(formatter);

}

/**

* 字符串转LocalDate类型

*

* @param dateStr

* @return

*/

public static LocalDate parseLocalDate(Object dateStr) {

if (ObjectUtils.isNull(dateStr)) {

return null;

}

if (dateStr instanceof Double) {

return date2LocalDate(parseDate(dateStr));

}

return LocalDate.parse(dateStr.toString(), DATE_FORMATTER);

}

/**

* Date转LocalDate

*

* @param date

* @return

*/

public static LocalDate date2LocalDate(Date date) {

if (null == date) {

return null;

}

return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDate();

}

/**

* LocalDate转Str

*

* @param localDate

* @return

*/

public static String localDate2Str(LocalDate localDate) {

return localDate2Str(null, localDate);

}

/**

* LocalDate转Str

*

* @param format 格式

* @param localDate

* @return

*/

public static String localDate2Str(String format, LocalDate localDate) {

if (null == localDate) {

return null;

}

DateTimeFormatter formatter = StrUtil.isBlank(format) ?

DATE_FORMATTER : DateTimeFormatter.ofPattern(format);

return localDate.format(formatter);

}

/**

* 字符串转LocalDateTime类型

*

* @param dateStr

* @return

*/

public static LocalDateTime parseLocalDateTime(Object dateStr) {

if (ObjectUtils.isNull(dateStr)) {

return nhttp://ull;

}

if (dateStr instanceof Double) {

return date2LocalDateTime(parseDate(dateStr));

}

return LocalDateTime.parse(dateStr.toString(), DATETIME_FORMATTER);

}

/**

* Date转LocalDateTime

*

* @param date

* @return

*/

public static LocalDateTime date2LocalDateTime(Date date) {

if (null == date) {

return null;

}

return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime();

}

/**

* LocalDate转Str

*

* @param localDateTime

* @return

*/

public static String localDateTime2Str(LocalDateTime localDateTime) {

return localDateTime2Str(null, localDateTime);

}

/**

* LocalDate转Str

*

* @param format

* @param localDateTime

* @return

*/

public static String localDateTime2Str(String format, LocalDateTime localDateTime) {

if (null == localDateTime) {

return null;

}

DateTimeFormatter formatter = StrUtil.isBlank(format) ?

DATETIME_FORMATTER : DateTimeFormatter.ofPattern(format);

return localDateTime.format(formatter);

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java多态实现原理详细梳理总结
下一篇:Java中String和StringBuffer及StringBuilder 有什么区别
相关文章

 发表评论

暂时没有评论,来抢沙发吧~