Java日期格式化實(shí)現(xiàn)過(guò)程
在 Java 中處理日期格式 yyyyMMddHHmmss(即年-月-日-時(shí)-分-秒,無(wú)分隔符),可以通過(guò) java.time 包(Java 8+)或 SimpleDateFormat(Java 7 及以下)實(shí)現(xiàn)。
以下是詳細(xì)說(shuō)明和示例代碼:
1. Java 8+:使用java.time包
推薦使用 Java 8 的 java.time 包,它更現(xiàn)代、線程安全且功能更強(qiáng)大。
1.1 格式化當(dāng)前時(shí)間為yyyyMMddHHmmss
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateFormatter {
public static void main(String[] args) {
// 當(dāng)前時(shí)間
LocalDateTime now = LocalDateTime.now();
// 定義格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
// 格式化為字符串
String formattedTime = now.format(formatter);
System.out.println("當(dāng)前時(shí)間(yyyyMMddHHmmss): " + formattedTime);
}
}
輸出示例:
當(dāng)前時(shí)間(yyyyMMddHHmmss): 20250612154603
1.2 將yyyyMMddHHmmss字符串解析為L(zhǎng)ocalDateTime
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class DateFormatter {
public static void main(String[] args) {
// 輸入字符串
String input = "20250612154603";
// 定義解析格式
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
// 解析為 LocalDateTime
LocalDateTime dateTime = LocalDateTime.parse(input, formatter);
System.out.println("解析后的日期時(shí)間: " + dateTime);
}
}
輸出示例:
解析后的日期時(shí)間: 2025-06-12T15:46:03
2. Java 7 及以下:使用SimpleDateFormat
對(duì)于舊版 Java,可以使用 SimpleDateFormat,但需注意線程安全問(wèn)題。
2.1 格式化當(dāng)前時(shí)間為yyyyMMddHHmmss
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatter {
public static void main(String[] args) {
// 當(dāng)前時(shí)間
Date now = new Date();
// 定義格式
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
// 格式化為字符串
String formattedTime = formatter.format(now);
System.out.println("當(dāng)前時(shí)間(yyyyMMddHHmmss): " + formattedTime);
}
}
輸出示例:
當(dāng)前時(shí)間(yyyyMMddHHmmss): 20250612154603
2.2 將yyyyMMddHHmmss字符串解析為Date
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateFormatter {
public static void main(String[] args) {
try {
// 輸入字符串
String input = "20250612154603";
// 定義解析格式
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
// 解析為 Date
Date date = formatter.parse(input);
System.out.println("解析后的日期時(shí)間: " + date);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
輸出示例:
解析后的日期時(shí)間: Wed Jun 12 15:46:03 CST 2025
3. 注意事項(xiàng)
| 符號(hào) | 含義 | 示例 |
|---|---|---|
| yyyy | 四位數(shù)的年份 | 2025 |
| YYYY | ISO 周歷年 2024(可能跨年) | 謹(jǐn)慎使用,僅用于周相關(guān)場(chǎng)景 |
| MM | 兩位數(shù)的月份(01-12) | 06 |
| dd | 兩位數(shù)的日期(01-31) | 12 |
| HH | 24小時(shí)制的小時(shí)(00-23) | 15 |
| hh | 12小時(shí)制的小時(shí)(01-12) | 15 |
| mm | 分鐘(00-59) | 49 |
| ss | 秒(00-59) | 33 |
| SSS | 毫秒(000-999) | 123 |
線程安全:
SimpleDateFormat不是線程安全的,在多線程環(huán)境中需每次創(chuàng)建新實(shí)例或使用synchronized。DateTimeFormatter是線程安全的,推薦優(yōu)先使用。
異常處理:
- 使用
SimpleDateFormat.parse()時(shí)需捕獲ParseException。
4. 常見(jiàn)錯(cuò)誤及解決方法
錯(cuò)誤 1:格式模式與輸入字符串不匹配
- 原因:輸入字符串的格式與定義的
DateTimeFormatter或SimpleDateFormat不一致。 - 解決:檢查格式模式是否正確,例如
yyyyMMddHHmmss不能用于2025-06-12 15:46:03。
錯(cuò)誤 2:解析非法日期(如 20250230)
- 原因:輸入字符串包含非法日期(如 2 月 30 日)。
- 解決:捕獲異常并處理非法輸入。
5. 擴(kuò)展:生成唯一標(biāo)識(shí)符
yyyyMMddHHmmss 常用于生成唯一標(biāo)識(shí)符(如訂單號(hào)、文件名)。
可以結(jié)合序列號(hào)或 UUID:
// 示例:生成訂單號(hào)
String orderNumber = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + "-001";
System.out.println("訂單號(hào): " + orderNumber);
輸出示例:
訂單號(hào): 20250612154603-001
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解SpringBoot下文件上傳與下載的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot下文件上傳與下載的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05
SpringSecurity實(shí)現(xiàn)動(dòng)態(tài)url攔截(基于rbac模型)
本文主要介紹了SpringSecurity動(dòng)態(tài)url攔截,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-08-08
SpringBoot項(xiàng)目自定義靜態(tài)資源映射規(guī)則的實(shí)現(xiàn)代碼
在開(kāi)發(fā)Web應(yīng)用時(shí),我們經(jīng)常需要處理文件上傳與訪問(wèn),?傳統(tǒng)做法可能是使用Nginx反向代理,但對(duì)于小型項(xiàng)目或快速開(kāi)發(fā)場(chǎng)景,我們可以直接用?Spring MVC的靜態(tài)資源映射? 功能,本文將基于WebMvcConfigurer手寫(xiě)配置,實(shí)現(xiàn) ?本地文件目錄映射為Web URL,需要的朋友可以參考下2025-08-08
java調(diào)用shell腳本及注意事項(xiàng)說(shuō)明
這篇文章主要介紹了java調(diào)用shell腳本及注意事項(xiàng)說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Java實(shí)現(xiàn)上傳文件圖片到指定服務(wù)器目錄
本文通過(guò)實(shí)例代碼給大家介紹了java上傳文件圖片到指定服務(wù)器目錄的相關(guān)知識(shí),代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-06-06
Java字符串格式化工具String.format()完整用法指南
String.format是Java中的一個(gè)靜態(tài)方法,用于創(chuàng)建格式化的字符串,這篇文章主要介紹了Java字符串格式化工具String.format()完整用法指南的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2026-01-01
SpringBoot中多個(gè)實(shí)現(xiàn)的接口正確注入的六種方式
在SpringBoot中,正確注入多個(gè)接口實(shí)現(xiàn)包括使用@Autowired和@Qualifier、@Resource注解、構(gòu)造方法注入、@Primary注解、Java配置類(lèi)以及將所有實(shí)現(xiàn)注入到List或Map中,感興趣的可以了解一下2024-10-10

