簡體   English   中英

從java sql date到java 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.

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