有没有办法获得给定年份Java的开始日期?

时间:2016-07-25 16:33:43

标签: java datetime

有没有办法使用任何库来做这样的事情。

DateTime getStartingDate(String year, int weekNo){
    //should return the starting day of the given weekNo of the given year.
}

Ex:year = 2016 weekNo = 1

DateTime return = 3月3日(周日至周六格式)                    = 1月4日(周一至周日格式)

1 个答案:

答案 0 :(得分:3)

作为一个起点,您似乎想要在一周中的某一天(例如星期日或星期一)开始的第一个完整周。

这可以通过以下方式实现:

import static java.time.temporal.TemporalAdjusters.nextOrSame;

public static LocalDate getStartingDate(int year, int weekNo, DayOfWeek weekStart) {
  //should check that arguments are valid etc.
  return Year.of(year).atDay(1).with(nextOrSame(weekStart)).plusDays((weekNo - 1) * 7);
}

或作为替代方案:

return Year.of(year).atDay(1).with(ALIGNED_WEEK_OF_YEAR, weekNo).with(nextOrSame(weekStart));

你这样称呼它:

import static java.time.DayOfWeek.MONDAY;
import static java.time.DayOfWeek.SUNDAY;

System.out.println(getStartingDate(2016, 1, SUNDAY)); //2016-01-03
System.out.println(getStartingDate(2016, 1, MONDAY)); //2016-01-04