加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java8解析给定字符串的日期或日期时间格式

发布时间:2020-12-15 04:32:42 所属栏目:Java 来源:网络整理
导读:我有一个文件可以具有日期修改值,具有日期或日期时间的格式.我曾经将值解析为: String t = "2012-01-05T21:21:52.834Z";logger.info(ZonedDateTime.parse(t).toEpochSecond() * 1000); 现在,字符串也可以 t = "2012-01-05"; 哪个引起了错误 Exception in th
我有一个文件可以具有日期修改值,具有日期或日期时间的格式.我曾经将值解析为:

String t = "2012-01-05T21:21:52.834Z";
logger.info(ZonedDateTime.parse(t).toEpochSecond() * 1000);

现在,字符串也可以

t = "2012-01-05";

哪个引起了错误

Exception in thread “main” java.time.format.DateTimeParseException:
Text ‘2012-01-05’ could not be parsed at index 10 at
java.time.format.DateTimeFormatter.parseResolved0(Unknown Source)

如果我用(Reference)做这个字符串

LocalDate date = LocalDate.parse(t,DateTimeFormatter.ISO_DATE);
logger.info(date.atStartOfDay(ZoneId.of("UTC")).toEpochSecond() * 1000);

这会奏效.但是,正如我已经提到的那样,字符串可以是这些类型中的任何一种,我如何识别格式然后相应地得到毫秒?

解决方法

可能的解决方案是使用具有默认值的可选模式.使用 DateTimeFormatterBuilder,您可以将所需图案与时间部分附加在可选部分中,即被[…]包围.在没有字段的情况下,我们通过将它们设置为0来提供默认值. OFFSET_SECONDS字段为0表示没有与UTC的偏移.

public static void main(String[] args) {
    String[] dates = { "2012-01-05T21:21:52.834Z","2012-01-05" };

    DateTimeFormatter formatter = 
        new DateTimeFormatterBuilder().appendPattern("yyyy-MM-dd['T'HH:mm:ss.SSSz]")
                                      .parseDefaulting(ChronoField.HOUR_OF_DAY,0)
                                      .parseDefaulting(ChronoField.MINUTE_OF_HOUR,0)
                                      .parseDefaulting(ChronoField.SECOND_OF_MINUTE,0)
                                      .parseDefaulting(ChronoField.NANO_OF_SECOND,0)
                                      .parseDefaulting(ChronoField.OFFSET_SECONDS,0)
                                      .toFormatter();
    for (String date : dates) {
        ZonedDateTime zonedDateTime = ZonedDateTime.parse(date,formatter);
        System.out.println(zonedDateTime.toEpochSecond() * 1000);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读