【发布时间】:2016-02-01 14:53:01
【问题描述】:
用 Joda 时间解析借记卡/信用卡的到期日期真的很容易:
org.joda.time.format.DateTimeFormatter dateTimeFormatter = org.joda.time.format.DateTimeFormat.forPattern("MMyy").withZone(DateTimeZone.forID("UTC"));
org.joda.time.DateTime jodaDateTime = dateTimeFormatter.parseDateTime("0216");
System.out.println(jodaDateTime);
输出:2016-02-01T00:00:00.000Z
我尝试使用 Java Time API 做同样的事情:
java.time.format.DateTimeFormatter formatter = java.time.format.DateTimeFormatter.ofPattern("MMyy").withZone(ZoneId.of("UTC"));
java.time.LocalDate localDate = java.time.LocalDate.parse("0216", formatter);
System.out.println(localDate);
输出:
原因:java.time.DateTimeException:无法获取LocalDate 来自 TemporalAccessor: {MonthOfYear=2, Year=2016},ISO,UTC 类型 java.time.format.Parsed 于 java.time.LocalDate.from(LocalDate.java:368) 在 java.time.format.Parsed.query(Parsed.java:226) 在 java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851) ... 30 更多
我在哪里犯了错误以及如何解决?
【问题讨论】:
-
本地日期似乎不能像您想要的那样广泛。本地需要一天。
标签: java java-8 jodatime java-time