public DateTimeUnit( DateTimeUnit dateTimeUnit, boolean iso8601 ) { this( iso8601 ); this.year = dateTimeUnit.getYear(); this.month = dateTimeUnit.getMonth(); this.day = dateTimeUnit.getDay(); this.dayOfWeek = dateTimeUnit.getDayOfWeek(); }
@Override public String formattedDate( String dateFormat, DateTimeUnit dateTimeUnit ) { return dateFormat .replace( "yyyy", String.format( "%04d", dateTimeUnit.getYear() ) ) .replace( "MM", String.format( "%02d", dateTimeUnit.getMonth() ) ) .replace( "dd", String.format( "%02d", dateTimeUnit.getDay() ) ); }
public DateTimeUnit( DateTimeUnit dateTimeUnit ) { this( dateTimeUnit.isIso8601() ); this.year = dateTimeUnit.getYear(); this.month = dateTimeUnit.getMonth(); this.day = dateTimeUnit.getDay(); this.dayOfWeek = dateTimeUnit.getDayOfWeek(); }
@Override public String formattedDate( DateTimeUnit dateTimeUnit ) { return getDateFormat() .replace( "yyyy", String.format( "%04d", dateTimeUnit.getYear() ) ) .replace( "MM", String.format( "%02d", dateTimeUnit.getMonth() ) ) .replace( "dd", String.format( "%02d", dateTimeUnit.getDay() ) ); }
@Override public DateTimeUnit minusYears( DateTimeUnit dateTimeUnit, int years ) { DateTimeUnit result = new DateTimeUnit( dateTimeUnit.getYear() - years, dateTimeUnit.getMonth(), dateTimeUnit.getDay(), dateTimeUnit.getDayOfWeek() ); updateDateUnit( result ); return result; }
@Override public String getIsoDate( DateTimeUnit dateTimeUnit, Calendar calendar ) { return String.format( "%d%02d%02d", dateTimeUnit.getYear(), dateTimeUnit.getMonth(), dateTimeUnit.getDay() ); }
@Override public DateTimeUnit minusYears( DateTimeUnit dateTimeUnit, int years ) { DateTimeUnit result = new DateTimeUnit( dateTimeUnit.getYear() - years, dateTimeUnit.getMonth(), dateTimeUnit.getDay(), dateTimeUnit.getDayOfWeek() ); updateDateUnit( result ); return result; }
@Override public DateTimeUnit plusYears( DateTimeUnit dateTimeUnit, int years ) { DateTimeUnit result = new DateTimeUnit( dateTimeUnit.getYear() + years, dateTimeUnit.getMonth(), dateTimeUnit.getDay(), dateTimeUnit.getDayOfWeek() ); updateDateUnit( result ); return result; }
private void updateDateUnit( DateTimeUnit result ) { int dm = CONVERSION_MAP.get( result.getYear() )[result.getMonth()]; if ( result.getDay() > dm ) { result.setDay( dm ); } result.setDayOfWeek( weekday( result ) ); }
@Override public DateTimeUnit plusYears( DateTimeUnit dateTimeUnit, int years ) { DateTimeUnit result = new DateTimeUnit( dateTimeUnit.getYear() + years, dateTimeUnit.getMonth(), dateTimeUnit.getDay(), dateTimeUnit.getDayOfWeek() ); updateDateUnit( result ); return result; }
@Override public DateTimeUnit toIso( DateTimeUnit dateTimeUnit ) { if ( dateTimeUnit.isIso8601() ) { return dateTimeUnit; } DateTime dateTime = START_ISO.toJodaDateTime(); int totalDays = 0; for ( int year = START_NEPAL.getYear(); year < dateTimeUnit.getYear(); year++ ) { totalDays += getYearTotal( year ); } for ( int month = START_NEPAL.getMonth(); month < dateTimeUnit.getMonth(); month++ ) { totalDays += CONVERSION_MAP.get( dateTimeUnit.getYear() )[month]; } totalDays += dateTimeUnit.getDay() - START_NEPAL.getDay(); dateTime = dateTime.plusDays( totalDays ); return new DateTimeUnit( DateTimeUnit.fromJodaDateTime( dateTime ), true ); }
@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 = CONVERSION_MAP.get( curYear )[curMonth]; } dayOfWeek--; if ( dayOfWeek == 0 ) { dayOfWeek = 7; } days--; } return new DateTimeUnit( curYear, curMonth, curDay, dayOfWeek ); }
private void updateDateUnit( DateTimeUnit result ) { int dm = getDaysFromMap( result.getYear(), result.getMonth() ); if ( result.getDay() > dm ) { result.setDay( dm ); } result.setDayOfWeek( weekday( result ) ); }
@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 ); }
@Override public String getIsoDate( DateTimeUnit dateTimeUnit, Calendar calendar ) { int year; int week; if ( calendar.isIso8601() ) { LocalDate date = LocalDate.of( dateTimeUnit.getYear(), dateTimeUnit.getMonth(), dateTimeUnit.getDay() ); WeekFields weekFields = WeekFields.of( PeriodType.MAP_WEEK_TYPE.get( getName() ), 4 ); year = date.get( weekFields.weekBasedYear() ); week = date.get( weekFields.weekOfWeekBasedYear() ); } else { dateTimeUnit = adjustToStartOfWeek( dateTimeUnit, calendar ); week = calendar.week( dateTimeUnit ); if ( week == 1 && dateTimeUnit.getMonth() == calendar.monthsInYear() ) { dateTimeUnit.setYear( dateTimeUnit.getYear() + 1 ); } year = dateTimeUnit.getYear(); } return String.format( "%d%s%d", year, weekPrefix, week ); }
int curDay = dateTimeUnit.getDay(); int dayOfWeek = dateTimeUnit.getDayOfWeek();
@Override public String getIsoDate( DateTimeUnit dateTimeUnit, Calendar calendar ) { int year; int week; if ( calendar.isIso8601() ) { LocalDate date = LocalDate.of( dateTimeUnit.getYear(), dateTimeUnit.getMonth(), dateTimeUnit.getDay() ); WeekFields weekFields = WeekFields.of( DayOfWeek.MONDAY, 4 ); year = date.get( weekFields.weekBasedYear() ); week = date.get( weekFields.weekOfWeekBasedYear() ) / 2; } else { DateTimeUnit date = adjustToStartOfBiWeek( dateTimeUnit, calendar ); week = calendar.week( date ); if ( week == 1 && date.getMonth() == calendar.monthsInYear() ) { date.setYear( date.getYear() + 1 ); } year = date.getYear(); } return String.format( "%d%s%d", year, weekPrefix, week ); }
@Override public DateTimeUnit minusDays( DateTimeUnit dateTimeUnit, int days ) { int curYear = dateTimeUnit.getYear(); int curMonth = dateTimeUnit.getMonth(); int curDay = dateTimeUnit.getDay(); int dayOfWeek = dateTimeUnit.getDayOfWeek(); int newDays = days; while ( newDays != 0 ) { curDay--; if ( curDay == 0 ) { curMonth--; if ( curMonth == 0 ) { curYear--; curMonth = 12; } curDay = getDaysFromMap( curYear, curMonth ); } dayOfWeek--; if ( dayOfWeek == 0 ) { dayOfWeek = 7; } newDays--; } return new DateTimeUnit( curYear, curMonth, curDay, dayOfWeek ); }
@Override public DateTimeUnit fromIso( DateTimeUnit dateTimeUnit ) { if ( dateTimeUnit.getYear() >= START_PERSIAN.getYear() && dateTimeUnit.getYear() <= STOP_PERSIAN.getYear() ) { return new DateTimeUnit( dateTimeUnit.getYear(), dateTimeUnit.getMonth(), dateTimeUnit.getDay(), dateTimeUnit.getDayOfWeek(), false ); } if ( dateTimeUnit.getYear() < START_ISO.getYear() || dateTimeUnit.getYear() > STOP_ISO.getYear() ) { throw new InvalidCalendarParametersException( "Illegal ISO year, must be between " + START_ISO.getYear() + " and " + STOP_ISO.getYear() + ", was given " + dateTimeUnit.getYear() ); } DateTime start = START_ISO.toJodaDateTime(); DateTime end = dateTimeUnit.toJodaDateTime(); return plusDays( START_PERSIAN, Days.daysBetween( start, end ).getDays() ); }