On 3/31/11 10:18 AM, Seth McGinnis wrote:
For those who have never encountered a non-standard calendar in the wild,
here's one place they show up:

Thanks for the clarification.

I draw the following conclusions:

1) converting between Calendars is ripe for error/mis-interpretation, and probably shouldn't be attempted.

2) "months" and "year" really should be considered a calendar concept, NOT a unit of time, like "seconds" and "hours", and thus should only be used in the context of calendar-specific calculation and specification. I don't know about "days" and "weeks".

The point of storing the data using the 360-day calendar is that it faithfully
reflects the structure of the model output.

I totally agree -- and further processing should respect that calendar, too.


I'm wondering what essential methods a calendar library needs to have to
support, eg 360 day calendars? The only one that comes to mind is to
calculate the difference between two dates in, say, seconds? What else?

I think using a data type that represents a date-time and another one for a time-delta, and system to work with them is really helpful.

a time-delta is a span of time, which could be expresses in seconds, hour, etc. However, when you pick a unit (like seconds) you are specifying a resolution and range, so it's kind of nice to have a universal one -- for instance, Python's timedelta stores days, seconds and microseconds internall to get a good range and microsecond resolution -- of course microsecond resolution isn't adequate for all use, so that may not be ideal. Perhaps udinits's time functionality is already good for this.

A date-time represents a particular point in time (rather than a span), and must be tied to a given calendar.

So:
  The difference between two date-times is a time-delta.
  You can add a time-delta to a date-time to get another date-time.
  etc.

With date-times, and good calender support, you could express things like:

x calendar months from a given date-time.
next thursday from a given date-time

and all sorts of nifty things like that, but they are distinctly different operations from:

date_time + 45 hours.

The mxDateTime package:

http://www.egenix.com/products/python/mxBase/mxDateTime/doc/

provides a "RelativeDateTime" object to handle that kind of calendar concepts/calculsations. That's a pretty nice approach.

HTH,

  -Chris







--
Christopher Barker, Ph.D.
Oceanographer

Emergency Response Division
NOAA/NOS/OR&R            (206) 526-6959   voice
7600 Sand Point Way NE   (206) 526-6329   fax
Seattle, WA  98115       (206) 526-6317   main reception

[email protected]
_______________________________________________
CF-metadata mailing list
[email protected]
http://mailman.cgd.ucar.edu/mailman/listinfo/cf-metadata

Reply via email to