Skip to content
Richard Hattersley edited this page Aug 5, 2013 · 18 revisions

How to get the encoding of time within Iris from the CF-netCDF style to something more palatable.

Issues with CF conventions

The following issues need clarification within the CF specification:

  • Does it make any sense to have time zones for non-Gregorian and/or Julian calendars.
  • Small amount of evidence to suggest "yes": Seth McGinnis, Jonathan Gregory
  • What are the "month" and "year" semantics for non-Gregorian calendars. i.e. CF-1.6 discusses the length of "year" and states it as 365.2421... but this is clearly nonsensical for non-Gregorian calendars.
  • Which takes precedence: the spec for UDUNITS or the implementation? i.e. What do we do about bugs in UDUNITS? For example:
  • Bill's "2013-02-03 9"?
  • "hours since 1970-01-01 00:00:00 +6" loses the time zone (could this be the fault of netCDF4-python?)
  • CF-1.6 states the default time zone is UTC, but does it really include leap seconds?!
  • What are the year-zero semantics for non-Gregorian calendars?
  • Small amount of evidence to suggest year-zero always exists: Jonathan Gregory
  • But also support for clarification: Dave Allured

Also see the OGC TemporalDWG.

Working proposal

See TimeBackground.

  • Use np.datetime64/'M8' and np.timedelta64 to support the gregorian/standard and proleptic_gregorian calendars.
    • NB. This will be incorrect for gregorian before 1582-10-15.
  • Use Time360/time360 and np.timedelta64 to support the 360-day calendar.
  • Add Time365, Time366 as for Time360.

Open questions

  • Calendars
  • Do we need to provide strict gregorian support?
  • How to support julian?
  • How to support none?
  • How to support custom calendars?
  • What should the coordinate units attribute be set to?

Other to-do

  • Vectorised "year", "month", etc. component access.
Clone this wiki locally