java - LocalDate DateTimeFormatter 问题
问题描述
我已经阅读了手册,我完全不知道为什么这段代码不起作用。
// Date Entered must be valid
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("MM/dd/yyyy")
.withResolverStyle(ResolverStyle.STRICT);
try {
String dateEntered = lossDateMonth + "/" + lossDateDay + "/" + lossDateYear; // Slash to match UI
System.out.println(dateEntered);
LocalDate dateParsed = LocalDate.parse(dateEntered, dateTimeFormatter);
println 语句打印:07/29/2015
最后一行抛出异常:java.time.format.DateTimeParseException: Text '07/29/2015' could not be parse: Unable to get LocalDate from TemporalAccessor: {YearOfEra=2015, DayOfMonth=29, MonthOfYear=7},ISO java.time.format.Parsed 类型的
我阅读了这方面的手册,它说如果您尝试解决一个不存在的日期,例如 9 月 31 日,就会发生这种事情。即使在错误中,解析器似乎也明白我在问 2015 年 7 月 29 日,那么我在这里做错了什么?
解决方案
用 替换模式"MM/dd/yyyy"
。"MM/dd/uuuu"
看看DateTimeFormatter和IsoChronology。问题是,当使用.withResolverStyle(ResolverStyle.STRICT)
格式化程序时,需要一个由uuuu
where yyyy
is the year of era提供的年份的唯一标识符。这是为了严格验证这些值。uuuu
唯一性是由可以为负的事实给出的。
推荐阅读
- powershell - Powershell:如何在 ApplicationContext 循环中添加循环代码以及如何优雅地退出?
- python - Pygame浮点精度碰撞检测
- google-sheets - 如何从非连续数字列表中创建范围显示?
- r - R编程-当数据框基包含字符时如何处理列条件
- google-bigquery - Left Join 给了我很多重复的价值
- firebase - 在 Cloud Firestore 中更新用户数据
- reactjs - 如何解决反应中的“无效的钩子调用”错误
- vue.js - 使用 v-for 渲染 VUE 路由器链接
- java - 如何创建类似 RDMS 的数据结构?
- php - 如何在 cakephp 3 中操作树形菜单的子项?