Package ucar.nc2.time

Class CalendarDateFormatter


  • @ThreadSafe
    public class CalendarDateFormatter
    extends Object
    Threadsafe static routines for date formatting. Replacement for ucar.nc2.units.DateFormatter
    Since:
    7/9/11
    • Constructor Detail

      • CalendarDateFormatter

        public CalendarDateFormatter​(String pattern)
        Date formatter with specified pattern. NOTE: we are using jodatime patterns right now, but may switch to jsr-310 when thats available in java 8. Not sure whether these patterns will still work then, so use this formatter at the risk of having to change it eventually. OTOH, its likely that the same functionality will be present in jsr-310.

        The pattern syntax is mostly compatible with java.text.SimpleDateFormat - time zone names cannot be parsed and a few more symbols are supported. All ASCII letters are reserved as pattern letters, which are defined as follows:

         Symbol  Meaning                      Presentation  Examples
         ------  -------                      ------------  -------
         G       era                          text          AD
         C       century of era (>=0)         number        20
         Y       year of era (>=0)            year          1996
        
         x       weekyear                     year          1996
         w       week of weekyear             number        27
         e       day of week                  number        2
         E       day of week                  text          Tuesday; Tue
        
         y       year                         year          1996
         D       day of year                  number        189
         M       month of year                month         July; Jul; 07
         d       day of month                 number        10
        
         a       halfday of day               text          PM
         K       hour of halfday (0~11)       number        0
         h       clockhour of halfday (1~12)  number        12
        
         H       hour of day (0~23)           number        0
         k       clockhour of day (1~24)      number        24
         m       minute of hour               number        30
         s       second of minute             number        55
         S       fraction of second           number        978
        
         z       time zone                    text          Pacific Standard Time; PST
         Z       time zone offset/id          zone          -0800; -08:00; America/Los_Angeles
        
         '       escape for text              delimiter
         ''      single quote                 literal       '
         
    • Method Detail

      • toDateTimeStringISO

        public static String toDateTimeStringISO​(Date d)
      • toDateTimeStringISO

        public static String toDateTimeStringISO​(long millisecs)
      • toDateString

        public static String toDateString​(Date date)
      • toDateTimeString

        public static String toDateTimeString​(Date date)
      • toDateTimeStringPresent

        public static String toDateTimeStringPresent()
      • toDateStringPresent

        public static String toDateStringPresent()
      • toTimeUnits

        public static String toTimeUnits​(CalendarDate cd)
        udunits formatting
        Parameters:
        cd - the calendar date
        Returns:
        udunits formated date
      • toTimeUnits

        public static String toTimeUnits​(Date date)
      • parseISODate

        @Deprecated
        public static Date parseISODate​(String iso)
        Deprecated.
        As of 4.3.10 use isoStringToDate(String) instead
        Old version using DateFormatter
        Parameters:
        iso - ISO 8601 date String
        Returns:
        equivilent Date
      • isoStringToCalendarDate

        public static CalendarDate isoStringToCalendarDate​(Calendar calt,
                                                           String iso)
                                                    throws IllegalArgumentException
        Convert an ISO formatted String to a CalendarDate.
        Parameters:
        calt - calendar, may be null for default calendar (Calendar.getDefault())
        iso - ISO 8601 date String
         possible forms for W3C profile of ISO 8601
              Year:
               YYYY (eg 1997)
            Year and month:
               YYYY-MM (eg 1997-07)
            Complete date:
               YYYY-MM-DD (eg 1997-07-16)
            Complete date plus hours and minutes:
               YYYY-MM-DDThh:mmTZD (eg 1997-07-16T19:20+01:00)
            Complete date plus hours, minutes and seconds:
               YYYY-MM-DDThh:mm:ssTZD (eg 1997-07-16T19:20:30+01:00)
            Complete date plus hours, minutes, seconds and a decimal fraction of a second
               YYYY-MM-DDThh:mm:ss.sTZD (eg 1997-07-16T19:20:30.45+01:00)
          
          where:
              YYYY = four-digit year
              MM   = two-digit month (01=January, etc.)
              DD   = two-digit day of month (01 through 31)
              hh   = two digits of hour (00 through 23) (am/pm NOT allowed)
              mm   = two digits of minute (00 through 59)
              ss   = two digits of second (00 through 59)
              s    = one or more digits representing a decimal fraction of a second
              TZD  = time zone designator (Z or +hh:mm or -hh:mm)
          except:
             You may use a space instead of the 'T'
             The year may be preceeded by a '+' (ignored) or a '-' (makes the date BCE)
             The date part uses a '-' delimiter instead of a fixed number of digits for each field
             The time part uses a ':' delimiter instead of a fixed number of digits for each field
                
        Returns:
        CalendarDate using given calendar
        Throws:
        IllegalArgumentException - if the String is not a valid ISO 8601 date
        See Also:
        "http://www.w3.org/TR/NOTE-datetime"