本文介紹了將Oracle Date解析為Java的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在查詢數據庫并以此格式獲取日期&01-SEP-22";
我要將此日期轉換為Java中的格式&yyyy-MM-dd";。我有什么辦法可以做到這一點嗎?
推薦答案
java.time
我建議您使用現代Java日期和時間API java.time進行日期工作。
為了解析全大寫的月份縮寫(如SEP
),我們需要指示它應用不區分大小寫的解析。
我們可以使用DateTimeFormatterBuilder
通過這樣的指令構建DateTimeFormatter
。
private static final DateTimeFormatter oracleFormatter
= new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("dd-MMM-uu")
.toFormatter(Locale.ROOT);
其他工作進展順利:
String stringFromOracle = "01-SEP-22";
LocalDate date = LocalDate.parse(stringFromOracle, oracleFormatter);
String formattedString = date.toString();
System.out.println(formattedString);
輸出為:
2022-09-01
為了生成字符串,我利用的是LocalDate.toString()
給出了您要求的格式,所以我沒有顯式使用任何格式化程序。該格式稱為ISO 8601,顧名思義,它是一種國際標準。
改進建議
-
不要將您的日期作為
String
從Oracle檢索。直接檢索LocalDate
并保存分析。不要將日期從一種字符串格式轉換為另一種字符串格式。在您的程序中,請將日期保留為
LocalDate
。如果您需要接受字符串輸入(這里不是這種情況),請立即將字符串解析為LocalDate
。僅當您需要提供字符串輸出時(例如,在向用戶或與其他系統交換數據時),將LocalDate
格式化為所需格式的字符串。
鏈接
Oracle tutorial: Date Time解釋如何使用java.time。
Wikipedia article: ISO 8601
Question: Insert & fetch java.time.LocalDate objects to/from an SQL database such as H2
這篇關于將Oracle Date解析為Java的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,