2016-07-25 18 views
0

是否有任何方式使用任何庫來做這樣的事情。有沒有一種方法可以獲得給定年份Java的給定weekNo的開始日期?

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

例如:年= 2016 weekNo = 1

日期時間返回= 1月3日在(週日至週六格式) = 1月4日在(星期一至日格式)

+1

你爲什麼要接受'年'作爲一個字符串?您希望的星期編號系統是否精確到ISO-8601?我還建議'LocalDate'是更合適的返回類型。 –

回答

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 
相關問題