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

Class URule

base/src/main/java/net/time4j/YOWElement.java:281–373  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

279 }
280
281 private static class URule<T extends ChronoEntity<T>>
282 implements UnitRule<T> {
283
284 //~ Methoden ------------------------------------------------------
285
286 @Override
287 public T addTo(
288 T entity,
289 long amount
290 ) {
291
292 if (amount == 0) {
293 return entity;
294 }
295
296 int yow =
297 MathUtils.safeCast(
298 MathUtils.safeAdd(
299 entity.get(YOWElement.INSTANCE).intValue(),
300 amount)
301 );
302
303 PlainDate date = entity.get(CALENDAR_DATE);
304 int woy = date.getWeekOfYear();
305 Weekday dow = date.getDayOfWeek();
306
307 if (woy == 53) {
308 PlainDate test = PlainDate.of(yow, 26, dow);
309 woy = test.getMaximum(Weekmodel.ISO.weekOfYear());
310 }
311
312 return entity.with(
313 CALENDAR_DATE,
314 PlainDate.of(yow, woy, dow));
315
316 }
317
318 @Override
319 public long between(
320 T start,
321 T end
322 ) {
323
324 PlainDate startDate = start.get(CALENDAR_DATE);
325 PlainDate endDate = end.get(CALENDAR_DATE);
326
327 int startYOW = startDate.get(YOWElement.INSTANCE).intValue();
328 int endYOW = endDate.get(YOWElement.INSTANCE).intValue();
329 long delta = endYOW - startYOW;
330
331 if (delta != 0) {
332 int startWOY = getWeekOfYear(startDate);
333 int endWOY = getWeekOfYear(endDate);
334
335 if ((delta > 0) && (startWOY > endWOY)) {
336 delta--;
337 } else if ((delta < 0) && (startWOY < endWOY)) {
338 delta++;

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected