利用DateTimeFormatter 来格式化时间时,报 java.time.format.DateTimeParseException: Text ‘2018-3-15 00:00:00’ could not be parsed at index 5 异常
Exception in thread "main" java.time.format.DateTimeParseException: Text '2018-3-15 00:00:00' could not be parsed at index 5
at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:1949)
at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851)
at java.time.LocalDateTime.parse(LocalDateTime.java:492)
at com.yikesong.core.domain.money.model.finance.FinanceService.getInstants(FinanceService.java:179)
at com.yikesong.core.domain.money.model.finance.FinanceService.main(FinanceService.java:167)
原因:当month小于10时,’MM’ 解析失败,前面加上0则解析成功.
public static void main(String[] args) {
getInstants(LocalDate.now(),15);
}
private static Instant[] getInstants(LocalDate localDate, int day) {
int month = localDate.getMonth().getValue();
int year = localDate.getYear();
// String monthStr = month < 10 ? ("0" + month) : month + "";
String monthStr = String.valueOf(month);
String dateStringStart = String.format("%d-%s-%d 00:00:00", year, monthStr, day);
String dateStringEnd = String.format("%d-%s-%d 23:59:59", year, monthStr, day);
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime start = LocalDateTime.parse(dateStringStart, dateTimeFormatter);
LocalDateTime end = LocalDateTime.parse(dateStringEnd, dateTimeFormatter);
//解析日期
Instant[] instant = new Instant[2];
instant[0] = start.toInstant(ZoneOffset.ofHours(8));
instant[1] = end.toInstant(ZoneOffset.ofHours(8));
return instant;
}