4hutool实战:DateUtil-格式化时间[通俗易懂]

4hutool实战:DateUtil-格式化时间[通俗易懂]hutool实战:把日期按照不同的需求格式化成对应的日期字符串关键字:javajavaJAVAhutoolhutoolHutool工具类工具类工具类DateUtilDateUtilDateUtil

大家好,又见面了,我是你们的朋友全栈君。

技术活,该赏
关注+一键三连(点赞,评论,收藏)再看,养成好习惯

hutool实战(带你掌握里面的各种工具)目录

万字博文教你搞懂java源码的日期和时间相关用法

java的SimpleDateFormat线程不安全出问题了,虚竹教你多种解决方案(万字长文*建议收藏)

要探索JDK的核心底层源码,那必须掌握native用法

源码分析:JDK获取默认时区的风险和最佳实践

java8 新日期时间API((一)JSR-310:ZoneId 时区和偏移量)

java8 新日期时间API((二)JSR-310:常用的日期时间API)

java8 新日期时间API((三)JSR-310:格式化和解析)

java8 新日期时间API((四)JSR-310:常用计算工具)

java8 新日期时间API((五)JSR-310:实战+源码分析)

时区的规则发生变化时,如何同步JDK的时区规则

JSR-310判断是否闰年实现,发现原作者的代码可能有问题

hutool日期时间系列文章

1DateUtil(时间工具类)-当前时间和当前时间戳

2DateUtil(时间工具类)-常用的时间类型Date,DateTime,Calendar和TemporalAccessor(LocalDateTime)转换

3DateUtil(时间工具类)-获取日期的各种内容

4DateUtil(时间工具类)-格式化时间

5DateUtil(时间工具类)-解析被格式化的时间

6DateUtil(时间工具类)-时间偏移量获取

7DateUtil(时间工具类)-日期计算

8ChineseDate(农历日期工具类)

9LocalDateTimeUtil(JDK8+中的{@link LocalDateTime} 工具类封装)

10TemporalAccessorUtil{@link TemporalAccessor} 工具类封装


用途:格式化时间

使用场景

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

项目引用

此博文的依据: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 localDateTime
localDateTime 被格式化的日期

返回值:

格式化后的字符串

参考案例:

        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 localDateTime
localDateTime 被格式化的日期
String format
format 日期格式,常用格式见: {@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 date
date 被格式化的日期
String format
format 日期格式,常用格式见: {@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 date
date 被格式化的日期
DatePrinter format
format {@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 date
date 被格式化的日期
DateFormat format
format {@link SimpleDateFormat}

返回值:

格式化后的字符串

参考案例:

待补充

源码解析:

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

方法明细

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

方法描述

根据特定格式格式化日期

支持版本及以上

5.0.0

参数描述:

参数名 描述
Date date
date 被格式化的日期
DateTimeFormatter format
format {@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 date
date 被格式化的日期

返回值:

格式化后的日期

参考案例:

		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 date
date 被格式化的日期

返回值:

格式化后的字符串

参考案例:

		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 date
date 被格式化的日期

返回值:

格式化后的字符串

参考案例:

		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 date
date 被格式化的日期

返回值:

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 date
date 被格式化的日期
boolean isUppercase
isUppercase 是否采用大写形式
boolean withTime
withTime 是否包含时间部分

返回值:

中文日期字符串

参考案例:

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

源码解析:

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/131752.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm2022.01.12激活码[最新免费获取][通俗易懂]

    (pycharm2022.01.12激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • 台式机dp接口_科普短文,高清晰音视频传输DP接口简单介绍

    DP是DisplayPort的缩写,是一种高清晰音视频流的传输接口。DisplayPort是由视频电子标准协会(VESA)发布的显示接口。作为DVI的继任者,DisplayPort能够传输未经压缩的视频和音频信号,并且支持更高的分辨率和刷新率。2006年5月,视频电子标准协会(VESA)制定了1.0版标准,随后陆续升级出现了1.1版、1.2版、1.3版、1.4版等。DisplayPort的出现赢得…

  • matlab矩阵除法「建议收藏」

    matlab矩阵除法「建议收藏」matlab中除法有四种,作除:\ .右除:/ ./对于标量的运算/与./用法一致,a/b或a./b表示a除以b\与.\用法一致,a\b或a.\b表示b除以a对于矩阵运算/:a/b表示矩阵a乘矩阵b的逆矩阵,与a*inv(b)一致\:a\b表示矩阵a的逆矩阵乘矩阵b,与inv(a)*b一致./:a./b表示矩阵a中的每个元素除矩阵b中的相对应的元素.\:a.\b表示矩阵b中的每个元素除矩阵a中的相对应的元素…

  • 用matlab求逆矩阵的方式_matlab矩阵转置命令

    用matlab求逆矩阵的方式_matlab矩阵转置命令如何用MATLAB求逆矩阵以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!如何用MATLAB求逆矩阵如果英文好呢,自己看目录不好还是先看中文的教材,对matlab的框架和功能有了一定的了解后,自己也就看的懂帮助里面的内容了,以后不懂再自己查帮助求逆矩阵一般有2种方法:1、伴随矩阵法。A的逆矩阵=A的伴随矩阵/A的行列式。…

  • pycharm2021怎么使用_第一次打开pycharm2021

    pycharm2021怎么使用_第一次打开pycharm2021Pycharm是一种PythonIDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理,代码跳转,只能提示,自动完成,单元测试、脚本控制。此外,该IDE提供了一些高级功能,用于支持Django框架下的专业Web开发,同时支持GoogleAppEngine,更酷的是Pycharm支持IronPython…

  • 进程间通信之CreatePipe

    进程间通信之CreatePipeCreatePipefunction创建匿名管道,返回读,写管道的handle。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号