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

