【发布时间】:2021-09-06 13:06:07
【问题描述】:
在旧的 java 中我可以这样做:
System.out.println(new SimpleDateFormat("yyyy w", Locale.UK).parse("2015 1"));
// shows Mon Dec 29 00:00:00 CET 2014
System.out.println(new SimpleDateFormat("yyyy w", Locale.US).parse("2015 1"));
// shows Mon Dec 28 00:00:00 CET 2014
我想在 Java 8 中使用 java.time。
System.out.println( LocalDate.parse("2015 1", DateTimeFormatter.ofPattern("yyyy w", Locale.US)));
结果:
java.time.format.DateTimeParseException:无法解析文本“2015 1”:无法从 TemporalAccessor 获取 LocalDate:{WeekOfWeekBasedYear[WeekFields[SUNDAY,1]]=1,Year=2015},java 类型的 ISO .time.format.Parsed
在java.time中怎么做?
此外,我不满意我必须通过语言环境来确定一周的第一天:周一与周日。它不是国家/地区功能,而是日历功能。我想使用 java.time.temporal.WeekFields.ISO 之类的东西来向世界展示从星期一开始的那一周
我发现了类似的案例:https://stackoverflow.com/questions/3941700/how-to-get-dates-of-a-week-i-know-week-number
但不适用于 Java 8 中的 java.time。此外,首先创建日期对象然后设置正确星期的解决方案并不优雅。我想一次性创建最终日期。
【问题讨论】: