【发布时间】:2017-02-02 11:48:30
【问题描述】:
我想使用 Java 8 包 java.time 从给定的星期和年份获取星期一日期。 但在某些时候我面临问题,因为它没有返回正确的日期。
private LocalDate getDateFromWeekAndYear(final String week,final String year){
LocalDate date = LocalDate.now();
date = date.with(WeekFields.ISO.dayOfWeek(), 1);
date = date.with(WeekFields.ISO.weekOfWeekBasedYear(), Long.parseLong(week));
date = date.with(WeekFields.ISO.weekBasedYear(), Long.parseLong(year));
return date;
}
例如:
- 如果我通过 week=1 和 year=2013 那么日期是:2012-12-31。
- 但如果我通过 week=53 和 year=2015 那么日期是:2014-12-29。我预计是 2014 年 12 月 28 日。
我是否犯了任何逻辑错误或其他问题?
【问题讨论】:
-
您的意思是使用 YearMonth.of(int year, int month) 获取当前日期?
-
2014 年 12 月 29 日是星期一 - 为什么您预计 2014 年 12 月 28 日?另请注意,使用
DayOfWeek.MONDAY.getValue()而不是1会更清晰。 -
你不需要当前日期的任何信息,不需要从那个开始。您可以使用
YearMonth.of(int year, int month)设置星期和年份,然后设置星期几 -
@AbhinayPandey 你对周数的定义是什么?我能想到至少四个定义。你想要ISO 8601 standard definition吗?
-
@AbhinayPandey 不,您的问题仍未解决。您在辅助方法中应用了错误的操作顺序,请参阅我的回答。
标签: java date java-8 java-time