Kotlin中如何将dd/mm/yyyy格式字符串解析为Date类型并处理解析异常
问题原因
- 日期格式模板和输入字符串不匹配:你使用的模板
"d / M / yyyy"中,斜杠前后额外加了空格,但实际获取到的日期字符串04/10/2022的斜杠两侧没有空格,解析到索引2的位置时字符匹配失败,直接抛出异常。 - 注意区分格式符含义:日期格式中大写
M代表月份,小写m代表分钟,如果你的输入格式为dd/MM/yyyy(日/月/年),一定要使用大写M避免逻辑错误。
修复方案
调整日期格式模板和输入完全对齐即可,修复后的代码如下:
// 根据实际输入的「日/月/年」两位格式定义模板,无多余空格 val dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy") val dateProduct = LocalDate.parse( jsonArray.getJSONObject(i).getString("Date"), dateFormatter ) val expirationDate = Date .from(dateProduct .atStartOfDay() .atZone(ZoneId.systemDefault()) .toInstant())
补充说明
如果你获取到的日期实际是「月/日/年」的格式(即04/10/2022代表2022年4月10日),只需要把格式模板修改为"MM/dd/yyyy"即可。
内容的提问来源于stack exchange,提问作者Mathis
相关产品推荐
相关产品推荐

