From: mathew
Date: 2005-09-30T13:46:44+09:00
Subject: Re: Time interval
Randy Kramer wrote:
> * (I guess this is the furthest off point): There seems to be an at least
> "semi-official" designation of the weeks in a year--you will find some
> calendars that number the weeks, and when I've checked, those numbers seem to
> be consistent between calendars, even made in different countries. (I think
> the ones I've noticed, some years ago, were calendars from England, Austria,
> and the US.)
You are probably looking for ISO 8601, which defines the algorithm for
computing week numbers.
> * Depending on the level of precision I wanted, I might calculate an
> interval in weeks, then consider 4 1/3 weeks ~= 1 month, 13 weeks ~= 1
> quarter, and 52 weeks = 1 year. If I wanted to express some arbitrary number
> of weeks in months, (e.g., 62, I'd divide by 4.34 and round off to the
> nearest integer and call it that number of months.
If you want an interval to sufficient level of precision, the problem is
insoluble.
Suppose you want 1 second precision. Well, unfortunately civil calendars
have leap seconds, and the moments at which leap seconds will need to
occur are not defined far in advance. So DateTime(2020-01-01) minus
DateTime(2000-01-01) can't be calculated to an exact number of seconds.
This is one reason why epoch dates are a very bad idea--it means that
when a leap second is declared, you either need to change the meaning of
existing data, or ignore it and let your time scale drift.
> If I wanted to express that in weeks, I guess my two choices would be to use
> the semi-official designation of weeks (first bullet above) and get the
> number of weeks by the difference in week numbers, and then depending on the
> days of the week, approximate it to the nearest 1/2 (or actual number of
> days).
I've a hunch that would lead to 'unexpected' results, because as per the
standards some years have 53 weeks: the first week of 2004 started in
2003, and the last week of 2004 ended in 2005.
> Or, calculate the actual difference in days, then divide by 7, call that
> weeks, and the remainder in days (or rounded off to, say, 1/2 week.
Well, the question is really what someone means when they say something
will take an interval of a certain number of weeks. If it's Thursday 1st
and I say something will take 2 weeks, I mean it'll take until Thursday
15th. I don't mean it'll take until Monday 19th (or Sunday 18th,
depending on whether you think weeks begin on Sunday or Monday...)
I claim that most people who talk about durations in weeks mean "days
divided by 7", without regard to whether the duration starts or ends on
a week boundary.
(I've been writing calendar software for a sizeable chunk of my career.
It's very hard to get right.)
mathew
--
WE HAVE TACOS