我需要将字符串“ 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);
答案 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));
请注意,由于缺少年份,因此在后一个示例中,我们需要以这种方式专门构建解析器,否则我们将获得异常。