java格式化date成字符串的詳細方法和示例
前言
在Java中將java.util.Date對象格式化為字符串,主要使用SimpleDateFormat類(或Java 8及更高版本的DateTimeFormatter)。以下是詳細方法和示例:
一、使用SimpleDateFormat(Java 7及以下)
步驟:
創(chuàng)建SimpleDateFormat對象:指定日期格式模式(如
"yyyy-MM-dd HH:mm:ss")。調(diào)用format()方法:將
Date對象轉換為字符串。
常用格式符號:
| 符號 | 含義 | 示例 |
|---|---|---|
yyyy | 四位年份 | 2025 |
MM | 兩位月份 | 06 |
dd | 兩位日期 | 24 |
HH | 24小時制 | 14 |
hh | 12小時制 | 02 |
mm | 分鐘 | 30 |
ss | 秒 | 45 |
SSS | 毫秒 | 789 |
E | 星期幾 | Tue |
a | AM/PM標記 | PM |
z | 時區(qū) | CST |
代碼示例:
import java.text.SimpleDateFormat;
import java.util.Date;
public class Main {
public static void main(String[] args) {
// 創(chuàng)建Date對象(當前時間)
Date date = new Date();
// 示例1:格式化為"年-月-日 時:分:秒"
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String str1 = sdf1.format(date); // 如:2025-06-24 15:30:45
System.out.println(str1);
// 示例2:格式化為"月/日/年 時:分 AM/PM"
SimpleDateFormat sdf2 = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
String str2 = sdf2.format(date); // 如:06/24/2025 03:30 PM
System.out.println(str2);
// 示例3:自定義格式(帶星期和時區(qū))
SimpleDateFormat sdf3 = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss z");
String str3 = sdf3.format(date); // 如:Tue, 24 Jun 2025 15:30:45 CST
System.out.println(str3);
}
}
二、注意事項
線程安全問題
SimpleDateFormat非線程安全。多線程環(huán)境下建議:每次創(chuàng)建新實例(性能較低),或
使用
ThreadLocal封裝實例。private static final ThreadLocal<SimpleDateFormat> threadSafeFormat = ThreadLocal.withInitial(() -> new SimpleDateFormat("yyyy-MM-dd")); String formattedDate = threadSafeFormat.get().format(date);
異常處理
解析字符串時需捕獲
ParseException,但格式化操作一般無需異常處理。時區(qū)設置
默認使用系統(tǒng)時區(qū)??赏ㄟ^
setTimeZone()修改:sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
三、Java 8+ 推薦方案(DateTimeFormatter)
Java 8引入的java.time.format.DateTimeFormatter線程安全且更靈活:
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
public class Main {
public static void main(String[] args) {
LocalDateTime now = LocalDateTime.now();
// 格式化為字符串
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedDate = now.format(formatter); // 如:2025-06-24 15:30:45
System.out.println(formattedDate);
}
}
四、總結
| 方法 | 適用場景 | 線程安全 |
|---|---|---|
SimpleDateFormat | Java 7及以下 | ? 否 |
DateTimeFormatter | Java 8+ | ? 是 |
簡單需求:直接使用
SimpleDateFormat.format()。高并發(fā)場景:用
ThreadLocal或升級到Java 8的DateTimeFormatter。復雜操作:優(yōu)先選擇
java.time包(如LocalDateTime、ZonedDateTime)。
可通過在線工具(如 SimpleDateFormat Tester)驗證格式模式是否正確。
總結
到此這篇關于java格式化date成字符串的文章就介紹到這了,更多相關java格式化date成字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
java多線程批量拆分List導入數(shù)據(jù)庫的實現(xiàn)過程
這篇文章主要給大家介紹了關于java多線程批量拆分List導入數(shù)據(jù)庫的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2021-10-10
解決java web應用線上系統(tǒng)偶發(fā)宕機的情況
這篇文章主要介紹了解決java web應用線上系統(tǒng)偶發(fā)宕機的情況,具有好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09
dubbo服務引用之創(chuàng)建Invoker流程詳解
這篇文章主要為大家介紹了dubbo服務引用二之創(chuàng)建Invoker流程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08
遠程調(diào)用@FeignClient注解屬性使用詳解
這篇文章主要為大家介紹了遠程調(diào)用@FeignClient注解屬性使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-10-10

