一、什麼是SimpleDateFormat
SimpleDateFormat是Java中的一個時間格式化工具類,可以將Date對象轉換為指定格式的字元串,也可以將符合格式的字元串轉換為Date對象。
SimpleDateFormat類位於java.text包中,是線程不安全的。
二、SimpleDateFormat的常用格式符
SimpleDateFormat支持很多日期和時間格式符,下面列舉一些常見的:
格式符 | 說明 |
---|---|
y | 年份表示:例如:2019 |
M | 月份表示:例如:11 |
d | 日表示:例如:01 |
H | 小時表示:例如:15 |
m | 分鐘表示:例如:30 |
s | 秒表示:例如:59 |
S | 毫秒表示:例如:234 |
三、SimpleDateFormat的常用方法
1. 格式化日期
格式化日期使用SimpleDateFormat的format方法,該方法接收一個Date類型的參數,並返回一個String類型的結果。
import java.text.SimpleDateFormat; import java.util.Date; public class SimpleDateFormatDemo { public static void main(String[] args) { Date currentDate = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String dateString = formatter.format(currentDate); System.out.println(dateString); } }
2. 解析日期
解析日期使用SimpleDateFormat的parse方法,該方法接收一個符合指定格式的字元串,並返回一個Date類型的結果。
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class SimpleDateFormatDemo { public static void main(String[] args) throws ParseException { String dateString = "2019-11-01 15:30:59"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = formatter.parse(dateString); System.out.println(date); } }
四、SimpleDateFormat的線程安全問題
SimpleDateFormat是線程不安全的類,因為SimpleDateFormat對象中包含了一個Calendar對象,而Calendar對象是線程共享的對象,多個線程對同一個Calendar對象進行操作會導致線程安全問題。
為了避免SimpleDateFormat線程安全問題,可以使用ThreadLocal來解決,代碼如下:
import java.text.SimpleDateFormat; import java.util.Date; public class SimpleDateFormatDemo { private static final ThreadLocal<SimpleDateFormat> THREADLOCAL_FORMAT = new ThreadLocal<SimpleDateFormat>() { @Override protected SimpleDateFormat initialValue() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); } }; public static String format(Date date) { return THREADLOCAL_FORMAT.get().format(date); } }
五、總結
SimpleDateFormat是Java中一個用於日期和時間格式化的工具類,可以將Date對象轉換為指定格式的字元串,也可以將符合格式的字元串轉換為Date對象。使用SimpleDateFormat時要注意它是線程不安全的,為了避免線程安全問題,可以使用ThreadLocal來限制SimpleDateFormat的共享範圍。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/189045.html