[英]Format date from String to LocalDate
我在將String
解析為LocalDate
時遇到問題。
根據 Stackoverflow 和文檔上的類似問題,我使用了正確的值 dd(月份中的某天)、MM(年份中的月份)和 yyyy(年份)。
我的弦
String mydate = "18.10.2022 07:50:18";
我的解析測試代碼
System.out.println(
LocalDate.parse(testPasswordExp)
.format(DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss")
)
);
錯誤:
Caused by: java.lang.RuntimeException:
java.time.format.DateTimeParseException:
Text '18.10.2022 07:50:18' could not be parsed at index 0
您的代碼示例的主要問題是,您首先將String
解析為LocalDate
而不使用合適的DateTimeFormatter
,然后使用 DateTimeFormatter format()
它,該DateTimeFormatter
嘗試格式化一天中的小時、小時的分鍾和分鍾的秒不在LocalDate
中。
您可以直接將此String
解析為LocalDate
,但最好將其解析為LocalDateTime
,因為您的String
包含的不僅僅是關於
您的myDate
(可能還有testPasswordExp
)有一天中的某個時間。 您也可以通過這種方式獲得LocalDate
作為最終結果,因為可以將LocalDateTime
縮小為toLocalDate()
。
一種可能的方式:
public static void main(String[] args) {
// example datetime
String testPasswordExp = "18.10.2022 07:50:18";
System.out.println(
LocalDateTime // use a LocalDateTime and…
.parse( // … parse …
testPasswordExp, // … the datetime using a specific formatter,
DateTimeFormatter.ofPattern("dd.MM.uuuu HH:mm:ss")
).toLocalDate() // then extract the LocalDate
);
}
Output:
2022-10-18
您不使用指定的格式進行解析,而是使用它來格式化解析的日期。
LocalDate.parse(mydate)
使用默認的ISO_LOCAL_DATE
格式。 您正在尋找這種重載:
LocalDate.parse(mydate, DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"))
此方法使用指定的格式將字符串解析為日期。
請注意,您正在使用LocalDate
,這意味着它將丟棄時間部分,僅保留解析后的日期。 您可能打算使用LocalDateTime
。
您可以使用
String mydate = "18.10.2022 07:50:18";
LocalDate ld = LocalDate.parse(mydate, DateTimeFormatter.ofPattern("dd.MM.yyyy HH:mm:ss"));
System.out.println(ld.toString());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.