栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

当所有字段(包括分隔符,但不包括年份)为可选时,在Java8中解析ISO 8601日期

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

当所有字段(包括分隔符,但不包括年份)为可选时,在Java8中解析ISO 8601日期

好吧,这花了我比预期更长的时间。唯一有效的解析器是:

DateTimeFormatter dtf = new DateTimeFormatterBuilder()        .appendValue(ChronoField.YEAR, 4)        .appendPattern("[['-']MM[['-']dd[['T']HH[[':']mm[[':']ss['.'SSS]]]]]]")        .parseDefaulting(ChronoField.MONTH_OF_YEAR, 1)        .parseDefaulting(ChronoField.DAY_OF_MONTH, 1)        .parseDefaulting(ChronoField.HOUR_OF_DAY, 0)        .parseDefaulting(ChronoField.MINUTE_OF_HOUR, 0)        .parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0)        .parseDefaulting(ChronoField.NANO_OF_SECOND, 0)        .toFormatter();String[] s = {        "2018",        "2018-10",        "2018-10-15",        "2018-10-15T12:00",        "2018-10-15T12:00:30",        "2018-10-15T12:00:30.123",        "20181015",        "201810151200",        "20181015120030",        "20181015120030.123",        "20181015T12:00:30.123"};for (String line : s) {  System.out.println(LocalDateTime.parse(line, dtf));}

问题是

yyyy
创建一个
ValueParser(minWidth=4, maxWidth=19,SignStyle.PAD_EXEEDS)
解析日期的a
20181015
作为
year=20181015
示例。因此我们必须将数字宽度限制
year
为4。

该文档指出:

:字母的数目确定最小字段宽度,在该最小字段宽度以下使用填充。

但未指定最大宽度。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/610186.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号