@Test public void testYearsBetween() throws Exception { int i = 0; assertEquals(getYearlyCoveringInfo(pairs[i], pairs[i + 1]), new CoveringInfo(0, false), "" + pairs[i] + "->" + pairs[i + 1]); i += 2; assertEquals(getYearlyCoveringInfo(pairs[i], pairs[i + 1]), new CoveringInfo(0, false), "" + pairs[i] + "->" + pairs[i + 1]); i += 2; assertEquals(getYearlyCoveringInfo(pairs[i], DateUtils.round(pairs[i + 1], MONTH)), new CoveringInfo(1, true), "" + pairs[i] + "->" + pairs[i + 1]); i += 2; assertEquals(getYearlyCoveringInfo(pairs[i], pairs[i + 1]), new CoveringInfo(0, false), "" + pairs[i] + "->" + pairs[i + 1]); i += 2; assertEquals(getYearlyCoveringInfo(pairs[i], pairs[i + 1]), new CoveringInfo(0, false), "" + pairs[i] + "->" + pairs[i + 1]); i += 2; assertEquals(getYearlyCoveringInfo(pairs[i], pairs[i + 1]), new CoveringInfo(1, false), "" + pairs[i] + "->" + pairs[i + 1]); }
public static CoveringInfo getYearlyCoveringInfo(Date from, Date to) { CoveringInfo monthlyCoveringInfo = getMonthlyCoveringInfo(from, to); if (monthlyCoveringInfo.getCountBetween() < 12) { return new CoveringInfo(0, false); } boolean coverable = monthlyCoveringInfo.isCoverable(); if (!from.equals(DateUtils.truncate(from, MONTH))) { from = DateUtils.addMonths(DateUtils.truncate(from, MONTH), 1); coverable = false; } Calendar cal = Calendar.getInstance(); cal.setTime(from); int fromMonth = cal.get(MONTH); int beginOffset = (12 - fromMonth % 12) % 12; int endOffset = (monthlyCoveringInfo.getCountBetween() - beginOffset) % 12; if (beginOffset > 0 || endOffset > 0) { coverable = false; } return new CoveringInfo((monthlyCoveringInfo.getCountBetween() - beginOffset - endOffset) / 12, coverable); }
DateUtil { public static CoveringInfo getYearlyCoveringInfo(Date from, Date to) { CoveringInfo monthlyCoveringInfo = getMonthlyCoveringInfo(from, to); if (monthlyCoveringInfo.getCountBetween() < 12) { return new CoveringInfo(0, false); } boolean coverable = monthlyCoveringInfo.isCoverable(); if (!from.equals(DateUtils.truncate(from, MONTH))) { from = DateUtils.addMonths(DateUtils.truncate(from, MONTH), 1); coverable = false; } Calendar cal = Calendar.getInstance(); cal.setTime(from); int fromMonth = cal.get(MONTH); int beginOffset = (12 - fromMonth % 12) % 12; int endOffset = (monthlyCoveringInfo.getCountBetween() - beginOffset) % 12; if (beginOffset > 0 || endOffset > 0) { coverable = false; } return new CoveringInfo((monthlyCoveringInfo.getCountBetween() - beginOffset - endOffset) / 12, coverable); } }
DateUtil { public static CoveringInfo getYearlyCoveringInfo(Date from, Date to) { CoveringInfo monthlyCoveringInfo = getMonthlyCoveringInfo(from, to); if (monthlyCoveringInfo.getCountBetween() < 12) { return new CoveringInfo(0, false); } boolean coverable = monthlyCoveringInfo.isCoverable(); if (!from.equals(DateUtils.truncate(from, MONTH))) { from = DateUtils.addMonths(DateUtils.truncate(from, MONTH), 1); coverable = false; } Calendar cal = Calendar.getInstance(); cal.setTime(from); int fromMonth = cal.get(MONTH); int beginOffset = (12 - fromMonth % 12) % 12; int endOffset = (monthlyCoveringInfo.getCountBetween() - beginOffset) % 12; if (beginOffset > 0 || endOffset > 0) { coverable = false; } return new CoveringInfo((monthlyCoveringInfo.getCountBetween() - beginOffset - endOffset) / 12, coverable); } private  DateUtil(); }
DateUtil { public static CoveringInfo getYearlyCoveringInfo(Date from, Date to) { CoveringInfo monthlyCoveringInfo = getMonthlyCoveringInfo(from, to); if (monthlyCoveringInfo.getCountBetween() < 12) { return new CoveringInfo(0, false); } boolean coverable = monthlyCoveringInfo.isCoverable(); if (!from.equals(DateUtils.truncate(from, MONTH))) { from = DateUtils.addMonths(DateUtils.truncate(from, MONTH), 1); coverable = false; } Calendar cal = Calendar.getInstance(); cal.setTime(from); int fromMonth = cal.get(MONTH); int beginOffset = (12 - fromMonth % 12) % 12; int endOffset = (monthlyCoveringInfo.getCountBetween() - beginOffset) % 12; if (beginOffset > 0 || endOffset > 0) { coverable = false; } return new CoveringInfo((monthlyCoveringInfo.getCountBetween() - beginOffset - endOffset) / 12, coverable); } private  DateUtil(); static String getAbsDateFormatString(String str); static Date resolveDate(String str, Date now); static String relativeToAbsolute(String relative); static String relativeToAbsolute(String relative, Date now); static String formatAbsDate(Date date); static Date resolveAbsoluteDate(final String str); static Date resolveRelativeDate(String str, Date now); static Date getCeilDate(Date date, UpdatePeriod interval); static Date getFloorDate(Date date, UpdatePeriod interval); static CoveringInfo getMonthlyCoveringInfo(Date from, Date to); static CoveringInfo getQuarterlyCoveringInfo(Date from, Date to); static CoveringInfo getYearlyCoveringInfo(Date from, Date to); static CoveringInfo getWeeklyCoveringInfo(Date from, Date to); static int getTimeDiff(Date fromDate, Date toDate, UpdatePeriod updatePeriod); }
DateUtil { public static CoveringInfo getYearlyCoveringInfo(Date from, Date to) { CoveringInfo monthlyCoveringInfo = getMonthlyCoveringInfo(from, to); if (monthlyCoveringInfo.getCountBetween() < 12) { return new CoveringInfo(0, false); } boolean coverable = monthlyCoveringInfo.isCoverable(); if (!from.equals(DateUtils.truncate(from, MONTH))) { from = DateUtils.addMonths(DateUtils.truncate(from, MONTH), 1); coverable = false; } Calendar cal = Calendar.getInstance(); cal.setTime(from); int fromMonth = cal.get(MONTH); int beginOffset = (12 - fromMonth % 12) % 12; int endOffset = (monthlyCoveringInfo.getCountBetween() - beginOffset) % 12; if (beginOffset > 0 || endOffset > 0) { coverable = false; } return new CoveringInfo((monthlyCoveringInfo.getCountBetween() - beginOffset - endOffset) / 12, coverable); } private  DateUtil(); static String getAbsDateFormatString(String str); static Date resolveDate(String str, Date now); static String relativeToAbsolute(String relative); static String relativeToAbsolute(String relative, Date now); static String formatAbsDate(Date date); static Date resolveAbsoluteDate(final String str); static Date resolveRelativeDate(String str, Date now); static Date getCeilDate(Date date, UpdatePeriod interval); static Date getFloorDate(Date date, UpdatePeriod interval); static CoveringInfo getMonthlyCoveringInfo(Date from, Date to); static CoveringInfo getQuarterlyCoveringInfo(Date from, Date to); static CoveringInfo getYearlyCoveringInfo(Date from, Date to); static CoveringInfo getWeeklyCoveringInfo(Date from, Date to); static int getTimeDiff(Date fromDate, Date toDate, UpdatePeriod updatePeriod); static final String UNIT; static final Date MAX_DATE; static final Date MIN_DATE; static final String GRANULARITY; static final String RELATIVE; static final Pattern P_RELATIVE; static final String WSPACE; static final String OPTIONAL_WSPACE; static final String SIGNAGE; static final Pattern P_SIGNAGE; static final String QUANTITY; static final Pattern P_QUANTITY; static final Pattern P_UNIT; static final String RELDATE_VALIDATOR_STR; static final Pattern RELDATE_VALIDATOR; static final Pattern TIMESTAMP_VALIDATOR; static final String YEAR_FMT; static final String MONTH_FMT; static final String DAY_FMT; static final String HOUR_FMT; static final String MINUTE_FMT; static final String SECOND_FMT; static final String MILLISECOND_FMT; static final String ABSDATE_FMT; static final String HIVE_QUERY_DATE_FMT; static final ThreadLocal<DateFormat> ABSDATE_PARSER; static final ThreadLocal<DateFormat> HIVE_QUERY_DATE_PARSER; }