簡體   English   中英

無法使用LocalDateTime解析日期

[英]Cannot parse date with LocalDateTime

我正在嘗試使用Java8 LocalDateTime解析日期字符串,但沒有成功。

例外是: DateTimeParseException:無法在索引3處解析文本'28 -APR-2015 01:25:00 PM'

要解析的字符串是: 28-APR-2015 01:25:00 PM ,我當前使用的模式是dd-LLL-yyyy hh:mm:ss a

我哪里錯了?

謝謝

添加示例代碼:

String text = "28-APR-2015 01:25:00 PM";
DateTimeFormatter fromatter = DateTimeFormatter.ofPattern("dd-LLL-yyyy hh:mm:ss a");
try {
        String out = LocalDateTime.parse(text, formatter)
        System.out.println(out);
    } catch (DateTimeParseException e) {
        e.printStackTrace();
    }

通過使用@Florin的響應來解決:

    DateTimeFormatter tertiaryFormatter = new DateTimeFormatterBuilder()
        .parseCaseInsensitive().parseLenient().appendPattern("dd-LLL-yyyy hh:mm:ss a").toFormatter();

英文MMM4月

英語LLL將是4

請運行此代碼段-它會為您提供很多解釋:

    asList("MMM", "LLL").forEach(ptrn
            -> System.out.println(ptrn + ": " + ofPattern(ptrn, Locale.ENGLISH).format(Month.APRIL))
    );
    Locale.setDefault(Locale.ENGLISH);
    String textM = "28-Apr-2015 01:25:00 PM";
    DateTimeFormatter formatterM = DateTimeFormatter.ofPattern("dd-MMM-yyyy hh:mm:ss a");
    System.out.println(LocalDateTime.parse(textM, formatterM));

    String textL = "28-4-2015 01:25:00 PM";
    DateTimeFormatter formatterL = DateTimeFormatter.ofPattern("dd-LLL-yyyy hh:mm:ss a");
    System.out.println(LocalDateTime.parse(textL, formatterL));

如果你需要使用APR,那么你需要建立自己的DateTimeFormatter使用DateTimeFormatterBuilder並設置parseCaseInsensitive選項。

問題是由於您的時間模式問題。 您需要確保您的時間格式可以與模式匹配。

https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

在此處輸入圖片說明

暫無
暫無

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

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