Package ucar.nc2.time

Class CalendarDateUnit


  • @Immutable
    public class CalendarDateUnit
    extends Object
    A Calendar Date Unit: "unit since date"
     UNIT since [-]Y[Y[Y[Y]]]-MM-DD[(T| )hh[:mm[:ss[.sss*]]][ [+|-]hh[[:]mm]]]
    
     UNIT = "msecs" | "msec" |
              "seconds" | "second" | "secs" | "sec" | "s" |
              "minutes" | "minute" | "mins" | "min" |
              "hours" | "hour" | "hrs" | "hr" | "h" |
              "days" | "day" | "d"
     
    "months since base_date by calendar field" "years since base_date by calendar field" bob simon's proposal: "calendar_month since base_date" "calendar_year since base_date" * only integer values are allowed (?) jon blowers comment: In your view would the solution to add "by calendar field" to the existing udunits string be acceptable? It’s backward-compatible with the current interpretation and adds clarification for the cases in which we *do* want to do calendar-field arithmetic (instead of adding fixed intervals). There’s an alternative proposition, in which the new units of calendar_month and calendar_year are added, with the same semantic effect. (However, personally I like the "by calendar field" solution since it allows other fields to vary between calendars, e.g. because of leap-seconds.)
    Since:
    3/18/11
    • Method Detail

      • of

        public static CalendarDateUnit of​(String calendarName,
                                          String udunitString)
        Create a CalendarDateUnit from a calendar name and a udunit string = "unit since calendarDate"
        Parameters:
        calendarName - must match a calendar enum, or one of its aliases, see ucar.nc2.time.Calendar.get()
        udunitString - "unit since calendarDate"
        Returns:
        CalendarDateUnit
        Throws:
        IllegalArgumentException - if udunitString is not paresable
      • withCalendar

        public static CalendarDateUnit withCalendar​(Calendar calt,
                                                    String udunitString)
        Create a CalendarDateUnit from a calendar and a udunit string = "unit since calendarDate"
        Parameters:
        calt - use this Calendar, or null for default calendar
        udunitString - "unit since calendarDate"
        Returns:
        CalendarDateUnit
        Throws:
        IllegalArgumentException - if udunitString is not paresable
      • of

        public static CalendarDateUnit of​(Calendar calt,
                                          CalendarPeriod.Field periodField,
                                          CalendarDate baseDate)
        Create a CalendarDateUnit from a calendar, a CalendarPeriod.Field, and a base date
        Parameters:
        calt - use this Calendar, or null for default calendar
        periodField - a CalendarPeriod.Field like Hour or second
        baseDate - "since baseDate"
        Returns:
        CalendarDateUnit
      • makeOffsetFromRefDate

        public double makeOffsetFromRefDate​(CalendarDate date)
      • makeCalendarDate

        public CalendarDate makeCalendarDate​(double value)
      • makeCalendarDate

        public CalendarDate makeCalendarDate​(int value)
      • getUdUnit

        public String getUdUnit()
      • getBaseCalendarDate

        public CalendarDate getBaseCalendarDate()
      • getCalendar

        public Calendar getCalendar()
      • isCalendarField

        public boolean isCalendarField()
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object