java.time.format.DateTimeParseException:无法在索引0处解析文本'2019年5月30日星期四-02:00 PM'

时间:2019-06-06 10:08:34

标签: java selenium

我需要将字符串“ 2019年5月30日星期四-02:00 PM”转换为(dd MMM hh:mm a)DateTimeFormat“ 06 June 01:54 PM”(日期)。

这是我的代码:

// last update date is : Thursday 30 May 2019 - 02:00 PM 
String lastUpadte WebUI.getText(findTestObject("Stock prices/date time"));
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yyyy");
LocalDate date = LocalDate.parse(lastUpadte, formatter);
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>" + date);

enter image description here

2 个答案:

答案 0 :(得分:3)

Java 8的日期和时间进行了修改,引入了诸如LocalDateTime之类的易于使用的类型。您的日期字符串之一中缺少年份会增加复杂性,但是使用这些功能,您可能会:

    String dtStr1 = "06 June 01:54 PM"; 
    DateTimeFormatter formatter1 = new DateTimeFormatterBuilder()
            .appendPattern("dd MMMM hh:mm a")
            .parseDefaulting(ChronoField.YEAR, 2019)
            .toFormatter();
    LocalDateTime date1 = LocalDateTime.parse(dtStr1, formatter1);

    String dtStr2 = "Thursday 30 May 2019 - 02:00 PM";  
    DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("EEEE dd MMM uuuu - hh:mm a");
    LocalDateTime date2 = LocalDateTime.parse(dtStr2, formatter2);

    System.out.println(date1);
    System.out.println(date2);

输出为:

2019-06-06T13:54 2019-05-30T14:00

格式化程序模式列在: https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

答案 1 :(得分:2)

获取与“ 2019年5月30日星期四-下午02:00”相同格式的java.time.LocalDateTime

LocalDateTime ldt = LocalDateTime.parse("Thursday 30 May 2019 - 02:00 PM", 
        DateTimeFormatter.ofPattern("EEEE dd MMMM uuuu '-' hh':'mm a")));

对于格式与“ 06 June 01:54 PM”相同的格式:

DateTimeFormatter formatter = new DateTimeFormatterBuilder()
   .appendPattern("dd MMMM hh':'mm a")
   .parseDefaulting(ChronoField.YEAR, 2019)
   .toFormatter();
LocalDateTime ldt = LocalDateTime.parse("06 June 01:54 PM", formatter)); 

请注意,由于缺少年份,因此在后一个示例中,我们需要以这种方式专门构建解析器,否则我们将获得异常。