private CalendarDateUnit(Calendar calt, CalendarPeriod.Field periodField, CalendarDate baseDate) { this.cal = calt; this.periodField = periodField; this.period = CalendarPeriod.of(1, periodField); this.baseDate = baseDate; if (periodField == CalendarPeriod.Field.Month || periodField == CalendarPeriod.Field.Year) { isCalendarField = true; } else { isCalendarField = false; } }
/** * Multiply the period by an integer * @param value multiply by this * @return new period */ public CalendarPeriod multiply(int value) { return CalendarPeriod.of(this.value * value, this.field); }
public void setUserTimeUnit(String value) { if (value != null) userTimeUnit = CalendarPeriod.of(value); // eg "10 min" or "minute }
public CalendarPeriod getUserTimeUnit() { CalendarPeriod result = null; String timeUnitS = getParameter("timeUnit"); if (timeUnitS != null) { result = CalendarPeriod.of(timeUnitS); // eg "10 min" or "minute" } return result; }
public CalendarPeriod getTimeUnit() { return CalendarPeriod.of(1, CalendarPeriod.fromUnitString(unitString)); }
public CalendarPeriod getTimeUnit() { return CalendarPeriod.of(1, CalendarPeriod.fromUnitString(unitString)); }
public CalendarDate makeCalendarDate(int value) { if (isCalendarField) return baseDate.add(CalendarPeriod.of( value, periodField)); else return baseDate.add( value, periodField); }
/** * Convert a udunit period string into a CalendarPeriod * @param udunit period string * @return CalendarPeriod or null if illegal */ public static CalendarPeriod of(String udunit) { String[] split = StringUtil2.splitString(udunit); if (split.length != 2) return null; try { int value = Integer.parseInt(split[0]); CalendarPeriod.Field unit = CalendarPeriod.fromUnitString(split[1]); return CalendarPeriod.of(value, unit); } catch (Throwable t) { return null; } }
public CalendarDate makeCalendarDate(int value) { if (isCalendarField) return baseDate.add(CalendarPeriod.of( value, periodField)); else return baseDate.add( value, periodField); }
public CalendarDate makeCalendarDate(double value) { if (isCalendarField) return baseDate.add(CalendarPeriod.of( (int) value, periodField)); else return baseDate.add( value, periodField); }
public CalendarDate makeCalendarDate(double value) { if (isCalendarField) return baseDate.add(CalendarPeriod.of( (int) value, periodField)); else return baseDate.add( value, periodField); }
public CalendarDate makeCalendarDate(int value) { if (isCalendarField) return baseDate.add(CalendarPeriod.of( value, periodField)); else return baseDate.add( value, periodField); }
public CalendarDate makeCalendarDate(double value) { if (isCalendarField) return baseDate.add(CalendarPeriod.of( (int) value, periodField)); // LOOK int vs double else return baseDate.add( value, periodField); }
public CalendarDate makeDateInTimeUnits(CalendarDate start, double addTo) { return start.add(CalendarPeriod.of((int) addTo, dateUnit.getCalendarField())); }
public static void main(String[] args) { CalendarPeriod cp = CalendarPeriod.of(1, Field.Day); CalendarDate start = CalendarDate.parseUdunits(null, "3 days since 1970-01-01 12:00"); CalendarDate end = CalendarDate.parseUdunits(null, "6 days since 1970-01-01 12:00"); int offset = cp.getOffset(start, end); System.out.printf("offset=%d%n", offset); } }
public static void main(String[] args) { CalendarDate start = CalendarDate.of(1269820799000L); CalendarDate end = CalendarDate.of(1269824399000L); TinvDate tinvDate = new TinvDate(start, end); System.out.printf("tinvDate = %s%n", tinvDate); CalendarDate refDate = CalendarDate.of(1269820800000L); CalendarPeriod timeUnit = CalendarPeriod.of("Hour"); Tinv tinv = tinvDate.convertReferenceDate(refDate, timeUnit); System.out.printf("tinv = %s offset from %s%n", tinv, refDate); }
public static CalendarPeriod of(TimeDuration td) { CalendarPeriod.Field unit = CalendarPeriod.fromUnitString(td.getTimeUnit().getUnitString()); return CalendarPeriod.of( (int) td.getValue(), unit); }
private CalendarDate[] makeDateBounds(SubsetParams coords, CalendarDate runtime) { double[] time_bounds = coords.getTimeOffsetIntv(); CalendarDateUnit dateUnit = (CalendarDateUnit) coords.get(SubsetParams.timeOffsetUnit); CalendarDate[] result = new CalendarDate[2]; result[0] = runtime.add(CalendarPeriod.of((int) time_bounds[0], dateUnit.getCalendarField())); result[1] = runtime.add(CalendarPeriod.of((int) time_bounds[1], dateUnit.getCalendarField())); return result; }
static public Coordinate factory(int nvals, Coordinate.Type type) { CalendarPeriod period = CalendarPeriod.of("1 hour"); switch (type) { case runtime: List<Long> cd = new ArrayList<>(nvals); for (int i=0; i<nvals; i++) cd.add( CalendarDate.of(null, 1953, 11, i+1, 9, i+1, 0).getMillis()); return new CoordinateRuntime(cd, period); case time: List<Integer> vals = new ArrayList<>(nvals); for (int i=0; i<nvals; i++) vals.add(i); return new CoordinateTime(0, period, null, vals, null); case vert: List<VertCoord.Level> vert = new ArrayList<>(nvals); for (int i=0; i<nvals; i++) vert.add(new VertCoord.Level((double) (i+1), (double) (i+2))); return new CoordinateVert(1, new GribLevelType(11, "m", null, true), vert); // random vert unit } return null; }
@Override public TimeCoord.TinvDate getForecastTimeInterval(Grib2Record gr) { Grib2Pds pds = gr.getPDS(); if (!pds.isTimeInterval()) return null; int[] intv = getForecastTimeIntervalOffset(gr); assert intv != null; int intvLen = intv[1]-intv[0]; int timeUnitOrg = pds.getTimeUnit(); int timeUnitConvert = convertTimeUnit(timeUnitOrg); CalendarPeriod unitPeriod = Grib2Utils.getCalendarPeriod(timeUnitConvert); if (unitPeriod == null) throw new IllegalArgumentException("unknown CalendarPeriod "+timeUnitConvert+ " org="+timeUnitOrg); CalendarPeriod.Field fld = unitPeriod.getField(); CalendarDate start = gr.getReferenceDate().add(intv[0], fld); CalendarPeriod period = CalendarPeriod.of(intvLen, fld); return new TimeCoord.TinvDate(start, period); }