@Override public void exitUncertainDate(UncertainDateContext ctx) { if (ctx.exception != null) return; Date latestDate = (Date) stack.pop(); Date earliestDate = (Date) stack.pop(); int earliestInterval = DateUtils.getCircaIntervalYears(earliestDate.getYear(), earliestDate.getEra()); int latestInterval = DateUtils.getCircaIntervalYears(latestDate.getYear(), latestDate.getEra()); // Express the circa interval as a qualifier. // stack.push(earliestDate.withQualifier(QualifierType.MINUS, earliestInterval, // QualifierUnit.YEARS)); // stack.push(latestDate.withQualifier(QualifierType.PLUS, latestInterval, // QualifierUnit.YEARS)); // OR: // Express the circa interval as an offset calculated into the year. DateUtils.subtractYears(earliestDate, earliestInterval); DateUtils.addYears(latestDate, latestInterval); stack.push(earliestDate); stack.push(latestDate); }