![](/img/trans.png)
[英]LocalDateTime.parse(yyyMMddHHmmssSSS, DateTimeFormatter.ofPattern("yyyyMMddHHmmssSSS") error
[英]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.