2016-07-25 2 views
0

Gibt es eine Möglichkeit, irgendeine Bibliothek zu verwenden, um so etwas zu tun.Gibt es eine Möglichkeit, das Startdatum einer bestimmten WocheNeines gegebenen Jahres Java zu erhalten?

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

Ex: Jahr = 2016 weekNo = 1

Datetime Rückkehr = 3. Januar in (So-Sa-Format) = 4. Januar in (Mo-So-Format)

+1

Warum sind Sie akzeptieren '

Dies könnte mit so etwas wie dies erreicht werden Jahr als String? Ist Ihr gewünschtes Wochennummernsystem genau ISO-8601? Ich würde auch vorschlagen, dass 'LocalDate' der passendere Rückgabetyp ist. –

Antwort

3

Es scheint, dass Sie Als Ausgangspunkt möchte ich die erste volle Woche beginnen, die an einem bestimmten Wochentag (Sonntag oder Montag in Ihrem Beispiel) beginnt.

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); 
} 

oder als Alternative:

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

Und Sie nennen es wie folgt aus:

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 
Verwandte Themen