4hutool实战:DateUtil-格式化时间

x33g5p2x  于2021-12-18 转载在 其他  
字(7.3k)|赞(0)|评价(0)|浏览(1063)

用途:格式化时间

使用场景

把日期按照不同的需求格式化成对应的日期字符串

项目引用

此博文的依据:hutool-5.6.5版本源码

<dependency>
			<groupId>cn.hutool</groupId>
			<artifactId>hutool-core</artifactId>
			<version>5.6.5</version>
		</dependency>

方法摘要

方法描述
cn.hutool.core.date.DateUtil.formatLocalDateTime(java.time.LocalDateTime)格式化日期时间<br> 格式 yyyy-MM-dd HH:mm:ss
cn.hutool.core.date.DateUtil.format(java.time.LocalDateTime, java.lang.String)根据特定格式格式化日期
cn.hutool.core.date.DateUtil.format(java.util.Date, java.lang.String)根据特定格式格式化日期
cn.hutool.core.date.DateUtil.format(java.util.Date, cn.hutool.core.date.format.DatePrinter)根据特定格式格式化日期
cn.hutool.core.date.DateUtil.format(java.util.Date, java.text.DateFormat)根据特定格式格式化日期
cn.hutool.core.date.DateUtil.format(java.util.Date, java.time.format.DateTimeFormatter)根据特定格式格式化日期
cn.hutool.core.date.DateUtil.formatDateTime(java.util.Date)格式化日期时间<br> 格式 yyyy-MM-dd HH:mm:ss
cn.hutool.core.date.DateUtil.formatDate(java.util.Date)格式化日期部分(不包括时间)<br> 格式 yyyy-MM-dd
cn.hutool.core.date.DateUtil.formatTime(java.util.Date)格式化时间<br> 格式 HH:mm:ss
cn.hutool.core.date.DateUtil.formatHttpDate(java.util.Date)格式化为Http的标准日期格式<br> 标准日期格式遵循RFC 1123规范,格式类似于:Fri, 31 Dec 1999 23:59:59 GMT
cn.hutool.core.date.DateUtil.formatChineseDate(java.util.Date, boolean, boolean)格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日,否则返回二〇一八年十月二十四日

方法明细

方法名称:cn.hutool.core.date.DateUtil.formatLocalDateTime(java.time.LocalDateTime)

方法描述

格式化日期时间<br>
格式 yyyy-MM-dd HH:mm:ss

支持版本及以上

参数描述:

参数名描述
LocalDateTime localDateTimelocalDateTime 被格式化的日期

返回值:

格式化后的字符串

参考案例:

String strDate = "2019-12-01 17:02:30";
		LocalDateTime ldt = DateUtil.parseLocalDateTime(strDate);
		String strDate1 = DateUtil.formatLocalDateTime(ldt);
		Assert.assertEquals(strDate, strDate1);

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.format(java.time.LocalDateTime, java.lang.String)

方法描述

根据特定格式格式化日期

支持版本及以上

参数描述:

参数名描述
LocalDateTime localDateTimelocalDateTime 被格式化的日期
String formatformat 日期格式,常用格式见: {@link DatePattern}

返回值:

格式化后的字符串

参考案例:

String strDate2 = "2019-12-01 17:02:30.111";
		ldt = DateUtil.parseLocalDateTime(strDate2, DatePattern.NORM_DATETIME_MS_PATTERN);
		strDate1 = DateUtil.format(ldt, DatePattern.NORM_DATETIME_PATTERN);
		Assert.assertEquals(strDate, strDate1);

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.format(java.util.Date, java.lang.String)

方法描述

根据特定格式格式化日期

支持版本及以上

参数描述:

参数名描述
Date datedate 被格式化的日期
String formatformat 日期格式,常用格式见: {@link DatePattern}

返回值:

格式化后的字符串

参考案例:

String strDate = "2021-05-16";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date localDate = sdf.parse(strDate);
		Assert.assertEquals(strDate, DateUtil.format(localDate, DatePattern.NORM_DATE_PATTERN));

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.format(java.util.Date, cn.hutool.core.date.format.DatePrinter)

方法描述

根据特定格式格式化日期

支持版本及以上

参数描述:

参数名描述
Date datedate 被格式化的日期
DatePrinter formatformat {@link DatePrinter} 或 {@link FastDateFormat}

返回值:

格式化后的字符串

参考案例:

//根据特定格式格式化日期
		String str = "2021-05-16";
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
		Date date = DateUtil.parse(str);
		String dateStr = DateUtil.format(date,sdf);
		System.out.println(dateStr);
		Assert.assertEquals(str, dateStr);

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.format(java.util.Date, java.text.DateFormat)

方法描述

根据特定格式格式化日期

支持版本及以上

参数描述:

参数名描述
Date datedate 被格式化的日期
DateFormat formatformat {@link SimpleDateFormat}

返回值:

格式化后的字符串

参考案例:

待补充

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.format(java.util.Date, java.time.format.DateTimeFormatter)

方法描述

根据特定格式格式化日期

支持版本及以上

5.0.0

参数描述:

参数名描述
Date datedate 被格式化的日期
DateTimeFormatter formatformat {@link SimpleDateFormat}

返回值:

格式化后的字符串

参考案例:

//根据特定格式格式化日期
		String str = "2021-05-16";
		DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.US);
		Date date = DateUtil.parse(str);
		String dateStr = DateUtil.format(date,dtf);
		System.out.println(dateStr);
		Assert.assertEquals(str, dateStr);
		// 此方法有问题,官方已处理 处理版本是5.7.5 修复 
		java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: YearOfEra

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.formatDateTime(java.util.Date)

方法描述

格式化日期时间<br>
格式 yyyy-MM-dd HH:mm:ss

支持版本及以上

参数描述:

参数名描述
Date datedate 被格式化的日期

返回值:

格式化后的日期

参考案例:

String dateStr = "2017-03-01";
		Date date = DateUtil.parse(dateStr);

		String format = DateUtil.format(date, "yyyy/MM/dd");
		Assert.assertEquals("2017/03/01", format);

		// 常用格式的格式化
		String formatDate = DateUtil.formatDate(date);
		Assert.assertEquals("2017-03-01", formatDate);
		String formatDateTime = DateUtil.formatDateTime(date);
		Assert.assertEquals("2017-03-01 00:00:00", formatDateTime);
		String formatTime = DateUtil.formatTime(date);
		Assert.assertEquals("00:00:00", formatTime);

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.formatDate(java.util.Date)

方法描述

格式化日期部分(不包括时间)<br>
格式 yyyy-MM-dd

支持版本及以上

参数描述:

参数名描述
Date datedate 被格式化的日期

返回值:

格式化后的字符串

参考案例:

String dateStr = "2017-03-01";
		Date date = DateUtil.parse(dateStr);

		String format = DateUtil.format(date, "yyyy/MM/dd");
		Assert.assertEquals("2017/03/01", format);

		// 常用格式的格式化
		String formatDate = DateUtil.formatDate(date);
		Assert.assertEquals("2017-03-01", formatDate);
		String formatDateTime = DateUtil.formatDateTime(date);
		Assert.assertEquals("2017-03-01 00:00:00", formatDateTime);
		String formatTime = DateUtil.formatTime(date);
		Assert.assertEquals("00:00:00", formatTime);

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.formatTime(java.util.Date)

方法描述

格式化时间<br>
格式 HH:mm:ss

支持版本及以上

3.0.1

参数描述:

参数名描述
Date datedate 被格式化的日期

返回值:

格式化后的字符串

参考案例:

String dateStr = "2017-03-01";
		Date date = DateUtil.parse(dateStr);

		String format = DateUtil.format(date, "yyyy/MM/dd");
		Assert.assertEquals("2017/03/01", format);

		// 常用格式的格式化
		String formatDate = DateUtil.formatDate(date);
		Assert.assertEquals("2017-03-01", formatDate);
		String formatDateTime = DateUtil.formatDateTime(date);
		Assert.assertEquals("2017-03-01 00:00:00", formatDateTime);
		String formatTime = DateUtil.formatTime(date);
		Assert.assertEquals("00:00:00", formatTime);

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.formatHttpDate(java.util.Date)

方法描述

格式化为Http的标准日期格式<br>
标准日期格式遵循RFC 1123规范,格式类似于:Fri, 31 Dec 1999 23:59:59 GMT

支持版本及以上

参数描述:

参数名描述
Date datedate 被格式化的日期

返回值:

HTTP标准形式日期字符串

参考案例:

String formatHttpDate = DateUtil.formatHttpDate(DateUtil.parse("2019-01-02 22:32:01"));
		Assert.assertEquals("Wed, 02 Jan 2019 14:32:01 GMT", formatHttpDate);

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

方法明细

方法名称:cn.hutool.core.date.DateUtil.formatChineseDate(java.util.Date, boolean, boolean)

方法描述

格式化为中文日期格式,如果isUppercase为false,则返回类似:2018年10月24日,否则返回二〇一八年十月二十四日

支持版本及以上

5.3.9

参数描述:

参数名描述
Date datedate 被格式化的日期
boolean isUppercaseisUppercase 是否采用大写形式
boolean withTimewithTime 是否包含时间部分

返回值:

中文日期字符串

参考案例:

String formatChineseDate = DateUtil.formatChineseDate(DateUtil.parse("2018-02-24"), true, false);
		Assert.assertEquals("二〇一八年二月二十四日", formatChineseDate);

源码解析:

4hutool源码分析:DateUtil(时间工具类)-格式化时间(万字长文源码分析,学大佬如何写代码)

相关文章