[英]Spring JDBC + Postgres SQL + Java 8 - conversion from/to LocalDate
[英]conversion from java sql date to java localdate
String oldDate = "04-07-19 02:41:39.063000000 PM";
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("dd-MM-YY HH:mm:ss")
.appendFraction(ChronoField.NANO_OF_SECOND, 1, 9, true)
.padNext(1)
.appendText(ChronoField.AMPM_OF_DAY)
.toFormatter();
LocalDate parseDate = LocalDate.parse(oldDate, formatter);
我來自數據庫的日期是“04-07-19 02:41:39.063000000 PM”,我想解析日期並將其轉換為我方便的形式。 但是當我嘗試使用上面提到的 DateTimeFormatter 解析日期時,代碼拋出異常..
新日期應該是下面提到的格式
String newDate = parseDate.format(DateTimeFormatter.ofPattern("dd-MMMM-uuuu"));
有人可以幫我跟蹤錯誤嗎?
我得到的例外是
Exception in thread "main" java.time.format.DateTimeParseException: Text '04-07-19 02:41:39.063000000 PM' could not be parsed at index 55
在您的模式中,您幾乎沒有錯誤。 首先, padNext()
的填充添加到一個固定的寬度。 在你的情況下,它應該是 28 或類似的東西。 我剛剛用appendLiteral(' ')
替換了它。 然后HH
代表一天 24 小時的小時數,它不適用於 AM/PM。 最后一件事是年, YY
根據 JavaDoc 表示“基於周的年”(不確定這意味着什么)-必須更改為yy
才能工作。
工作模式:
String oldDate = "04-07-19 02:41:39.063000000 PM";
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("dd-MM-yy hh:mm:ss")
.appendFraction(ChronoField.NANO_OF_SECOND, 1, 9, true)
.appendLiteral(' ')
.appendText(ChronoField.AMPM_OF_DAY)
.toFormatter();
LocalDate parseDate = LocalDate.parse(oldDate, formatter);
System.out.println(parseDate);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.