从Calendar week到java.time.ZonedDateTime

时间:2019-06-05 10:00:27

标签: java java-time

使用java.time.ZonedDateTime,您可以获得日历周(例如第1周)。

import java.time.ZonedDateTime;

int getCalendarWeek(ZonedDateTime zonedDateTime){
   int week = zonedDateTime.get ( IsoFields.WEEK_OF_WEEK_BASED_YEAR );
   return week;
}

给定年份和日历周(例如:2019年和第20周),如何返回java.time.ZonedDateTime

日历周的第一天(星期一)是日期。无论什么时候。

ZonedDateTime getZonedDateTime(int year, int weekNumber){
// ???
}

1 个答案:

答案 0 :(得分:3)

您可以在ZonedDateTime中使用with操作来获取基于特定星期的日期。 WeekFields类允许访问执行此操作所需的TemporalFields。请参见下面的示例:

int week = 1;
int year = 2016;
WeekFields weekFields = WeekFields.of(Locale.getDefault());
ZonedDateTime ldt = ZonedDateTime.now()
                        .withYear(year)
                        .with(weekFields.weekOfYear(), week)
                        .with(weekFields.dayOfWeek(), 1);

请注意,这会解决时区问题,因为它假定了系统默认时区。