public CalendarDateRange getCalendarRange() { CalendarDate rd = getRunDate(); if (coords != null) { CalendarDate start = rd.add(calendarPeriod.multiply(coords.get(0))); CalendarDate end = rd.add(calendarPeriod.multiply(coords.get(coords.size() - 1))); return CalendarDateRange.of(start, end); } else { CalendarDate start = rd.add(calendarPeriod.multiply(intervals.get(0).b1)); CalendarDate end = rd.add(calendarPeriod.multiply(intervals.get(intervals.size() - 1).b2)); return CalendarDateRange.of(start, end); } }
static public CalendarDate getValidTime(CalendarDate refDate, int timeUnit, int offset) { CalendarPeriod period = GribUtils.getCalendarPeriod(timeUnit); return refDate.add(period.multiply(offset)); }
public Tinv convertReferenceDate(CalendarDate fromDate, CalendarPeriod fromUnit, CalendarDate toDate, CalendarPeriod toUnit) { CalendarDate start = fromDate.add(fromUnit.multiply(b1)); CalendarDate end = fromDate.add(fromUnit.multiply(b2)); int startOffset = TimeCoord.getOffset(toDate, start, toUnit); int endOffset = TimeCoord.getOffset(toDate, end, toUnit); return new TimeCoord.Tinv(startOffset, endOffset); }
@Override public Object extract(Grib2Record gr) { Grib2Pds pds = gr.getPDS(); int offset = pds.getForecastTime(); int tuInRecord = pds.getTimeUnit(); if (tuInRecord == code) { return offset; } else { CalendarPeriod period = Grib2Utils.getCalendarPeriod(tuInRecord); if (period == null) { logger.warn("Cant find period for time unit="+tuInRecord); return offset; } CalendarDate validDate = refDate.add(period.multiply(offset)); return TimeCoord.getOffset(refDate, validDate, timeUnit); } }
public CalendarDate getForecastDate(Grib2Record gr) { Grib2Pds pds = gr.getPDS(); if (pds.isTimeInterval()) { TimeCoord.TinvDate intv = getForecastTimeInterval(gr); return intv == null ? null : intv.getEnd(); } else { int val = pds.getForecastTime(); CalendarPeriod period = Grib2Utils.getCalendarPeriod(convertTimeUnit(pds.getTimeUnit())); if (period == null) return null; return gr.getReferenceDate().add(period.multiply(val)); } }
CalendarPeriod period = unitPeriod.multiply(range);