利用DateTimeFormatter 来格式化时间时,报DateTimeParseException异常

利用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;
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值