簡體   English   中英

Java DateTimeFormatter 和 LocalDateTime.parse 麻煩

[英]Java DateTimeFormatter and LocalDateTime.parse trouble

很抱歉這個問題是基本的,並且無法展示我嘗試過的東西。 但截至目前,我很難理解 Java 的 DateTimeFormatter 和 LocalDateTime。

不工作的代碼,但顯然在我不知道的一些變化之前一直在工作(我剛把這段代碼扔在我的腿上):

public getDateForIception() {
    String tid = driver.findElement(By.cssSelector("div.hendelse-tid.hb-tekst--ingenBryting"))
        .getText().replaceAll("(?<=[A-Za-z]{3})[.a-z]{1,2}", "");
    if(tid.split("\\.")[0].length() == 1) {
        tid = "0" + tid;
    }

    return DatoUtils.parseDatoLocalDateTime(tid,  "dd. MMM yyyy HH:mm");
}

不完全確定替換字符等的意義是什么,但在這種情況下,if() 沒有被執行,並且“tid”變量沒有改變。 只是把它放在這里以供參考。

public static LocalDateTime parseDatoLocalDateTime(String datoString, String pattern) {
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .appendPattern(pattern)
        .toFormatter(Locale.forLanguageTag("no"));
    return LocalDateTime.parse(datoString, formatter);
}

我懷疑從頁面讀取的格式發生了一些變化,因此解析失敗。 但是錯誤消息對我來說毫無意義:

java.time.format.DateTimeParseException: Text '15. jun 2022 19:51' could not be parsed at index 4

非常感謝您的想法或解決方案。

在格式化程序生成器中,挪威語由這一行設置

.toFormatter(Locale.forLanguageTag("no"));

您可以使用語言標簽en將語言環境設置為英語,或者您應該提供挪威月份名稱(在末尾帶有一個點以表示縮短的變體),例如jan. feb. , mar. , apr. , mai (點不是必需的,因為它是完整的月份名稱)等。


編輯:經過額外研究,我發現您可以解析挪威月份而無需在末尾添加一個點。 為此,您需要使用一個月的獨立格式(LLL 而不是 MMM)。

因此,您的代碼將如下所示

public getDateForIception() {
    String tid = driver.findElement(By.cssSelector("div.hendelse-tid.hb-tekst--ingenBryting"))
        .getText().replaceAll("(?<=[A-Za-z]{3})[.a-z]{1,2}", "");
    if(tid.split("\\.")[0].length() == 1) {
        tid = "0" + tid;
    }

    return DatoUtils.parseDatoLocalDateTime(tid,  "dd. LLL yyyy HH:mm");
}

public static LocalDateTime parseDatoLocalDateTime(String datoString, String pattern) {
    DateTimeFormatter formatter = new DateTimeFormatterBuilder()
        .parseCaseInsensitive()
        .appendPattern(pattern)
        .toFormatter(Locale.forLanguageTag("no"));
    return LocalDateTime.parse(datoString, formatter);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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