EthiopianCalendar extends ChronologyBasedCalendar { @Override public DateTimeUnit minusDays( DateTimeUnit dateTimeUnit, int days ) { int curYear = dateTimeUnit.getYear(); int curMonth = dateTimeUnit.getMonth(); int curDay = dateTimeUnit.getDay(); int dayOfWeek = dateTimeUnit.getDayOfWeek(); while ( days != 0 ) { curDay--; if ( curDay == 0 ) { curMonth--; if ( curMonth == 0 ) { curYear--; curMonth = 12; } curDay = 30; } dayOfWeek--; if ( dayOfWeek == 0 ) { dayOfWeek = 7; } days--; } return new DateTimeUnit( curYear, curMonth, curDay, dayOfWeek ); } protected  EthiopianCalendar(); static Calendar getInstance(); @Override String name(); @Override DateTimeUnit toIso( DateTimeUnit dateTimeUnit ); @Override DateTimeUnit fromIso( Date date ); @Override DateTimeUnit fromIso( DateTimeUnit dateTimeUnit ); @Override DateTimeUnit plusDays( DateTimeUnit dateTimeUnit, int days ); @Override DateTimeUnit minusDays( DateTimeUnit dateTimeUnit, int days ); @Override DateTimeUnit plusWeeks( DateTimeUnit dateTimeUnit, int weeks ); @Override DateTimeUnit minusWeeks( DateTimeUnit dateTimeUnit, int weeks ); @Override DateTimeUnit plusMonths( DateTimeUnit dateTimeUnit, int months ); @Override DateTimeUnit minusMonths( DateTimeUnit dateTimeUnit, int months ); @Override DateTimeUnit plusYears( DateTimeUnit dateTimeUnit, int years ); @Override DateTimeUnit minusYears( DateTimeUnit dateTimeUnit, int years ); @Override int daysInYear( int year ); @Override int daysInMonth( int year, int month ); @Override int daysInWeek(); @Override DateTimeUnit isoStartOfYear( int year );  }
@Test public void testMinusDays() { DateTimeUnit dateTimeUnit = new DateTimeUnit( 2007, 1, 1 ); DateTimeUnit testDateTimeUnit = calendar.minusDays( dateTimeUnit, 2 ); assertEquals( 2006, testDateTimeUnit.getYear() ); assertEquals( 12, testDateTimeUnit.getMonth() ); assertEquals( 29, testDateTimeUnit.getDay() ); }