MCPcopy Create free account
hub / github.com/MenoData/Time4J / ofWeekdate

Method ofWeekdate

base/src/main/java/net/time4j/PlainDate.java:2185–2241  ·  view source on GitHub ↗
(
        int yearOfWeekdate,
        int weekOfYear,
        Weekday dayOfWeek,
        boolean validating
    )

Source from the content-addressed store, hash-verified

2183 }
2184
2185 private static PlainDate ofWeekdate(
2186 int yearOfWeekdate,
2187 int weekOfYear,
2188 Weekday dayOfWeek,
2189 boolean validating
2190 ) {
2191
2192 if ((weekOfYear < 1) || (weekOfYear > 53)) {
2193 if (validating) {
2194 throw new IllegalArgumentException(woyFailed(weekOfYear));
2195 } else {
2196 return null;
2197 }
2198 }
2199
2200 if (
2201 validating
2202 && ((yearOfWeekdate < MIN_YEAR) || (yearOfWeekdate > MAX_YEAR))
2203 ) {
2204 throw new IllegalArgumentException(yowFailed(yearOfWeekdate));
2205 }
2206
2207 Weekday wdNewYear =
2208 Weekday.valueOf(GregorianMath.getDayOfWeek(yearOfWeekdate, 1, 1));
2209 int dow = wdNewYear.getValue();
2210 int doy = (
2211 ((dow <= 4) ? 2 - dow : 9 - dow)
2212 + (weekOfYear - 1) * 7
2213 + dayOfWeek.getValue() - 1
2214 );
2215 int y = yearOfWeekdate;
2216
2217 if (doy <= 0) {
2218 y--;
2219 doy += (GregorianMath.isLeapYear(y) ? 366 : 365);
2220 } else {
2221 int yearlen =
2222 (GregorianMath.isLeapYear(y) ? 366 : 365);
2223 if (doy > yearlen) {
2224 doy -= yearlen;
2225 y++;
2226 }
2227 }
2228
2229 PlainDate result = PlainDate.ofYearDay(y, doy, dayOfWeek);
2230
2231 if ((weekOfYear == 53) && (result.getWeekOfYear() != 53)) {
2232 if (validating) {
2233 throw new IllegalArgumentException(woyFailed(weekOfYear));
2234 } else {
2235 return null;
2236 }
2237 }
2238
2239 return result;
2240
2241 }
2242

Callers 2

ofMethod · 0.95
createFromMethod · 0.95

Calls 9

woyFailedMethod · 0.95
yowFailedMethod · 0.95
valueOfMethod · 0.95
getDayOfWeekMethod · 0.95
getValueMethod · 0.95
isLeapYearMethod · 0.95
ofYearDayMethod · 0.95
getWeekOfYearMethod · 0.95
getValueMethod · 0.65

Tested by

no test coverage detected