簡體   English   中英

將日期從 String 格式化為 LocalDate

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM