天天看點

4hutool實戰:DateUtil-格式化時間[通俗易懂]hutool日期時間系列文章用途:格式化時間

大家好,又見面了,我是你們的朋友全棧君。

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(時間工具類)-格式化時間(萬字長文源碼分析,學大佬如何寫代碼)

釋出者:全棧程式員棧長,轉載請注明出處:https://javaforall.cn/131752.html原文連結:https://javaforall.cn

本文參與 騰訊雲自媒體分享計劃 ,歡迎熱愛寫作的你一起參與!

本文分享自作者個人站點/部落格

複制

如有侵權,請聯系 [email protected] 删除。