Proposed new KDateTime class
David Jarvie
lists at astrojar.org.uk
Thu Dec 8 12:31:48 GMT 2005
On Thursday 8 December 2005 8:24, Tobias Koenig wrote:
>On Thu, Dec 08, 2005 at 12:10:30AM +0000, David Jarvie wrote:
>> On Wednesday 07 Dec 2005 22:01, Tobias Koenig wrote:
>
>> The problem is that the data held for different time zone classes (because
of
>> the different types of data in the source databases) varies. For example,
for
>> KSystemTimezone, the class doesn't actually hold data on daylight savings
>> time changes. It gets information as and when required about UTC offsets,
>> etc., from library calls.
>Well, so the external helper class would just pass in the data without
>daylight saving time changes and when this information is not available,
>KTimezone will automatically use the UTC offsets for calculating... or
>do I miss something here?
How does KTimezone know what UTC offsets to use if it doesn't have daylight
saving time change information?
>Maybe you could summarize shortly which data (timezones, daylight saving
>changes, additional data) may vary in the subclassed KTimezone classes.
There is actually no data common to all KTimezone classes except for the
mandatory name. The only thing they really have in common is methods to
access and manipulate times and UTC offsets.
>> It would require a lot of processing for it to call
>> library functions to get a complete list of time changes.
>Yes, so the KSystemTimezone would do... so where is the difference?
KSystemTimezone only calls library functions when it needs to. It would
generally only ask for one UTC offset for a specific date/time. But to define
a time zone properly, you need ALL the time changes and UTC offsets (or at
least those within whatever time period is of interest). This is not
something which the libc functions are designed to provide.
>> If, of course, the system library gets its information from the zonetab
database, it could read
>> the relevant tzfile using the KTzfileTimezone class, and compile a
complete
>> list of time changes from it. But if the system time zone database comes
from
>> some other source, there is no obvious solution.
>What do you mean with other source?
On non-Linux operating systems (particularly Windows which will presumably be
implemented in the next year or two), there may not be a zonetab database.
>> To sum up, there is no fixed set of data belonging to a time zone class.
So
>> it's difficult to see how to proceed.
>Not a fixed set, but maybe a greatest common factor which can be used in
>KTimezone.
As I explain above, there is no greatest common factor beyond the time zone
name. And the name depends on the time zone database being used as the source.
>I know this workaround breaks the nice OO way of doing software
>development, however a class which can't be used in most cases (and
>serialization will be an important action in KDEPIM 4.0) is quite
>useless.
I agree that serialisation is important. The problem is how to do it.
--
David Jarvie.
KAlarm author & maintainer.
http://www.astrojar.org.uk/linux/kalarm.html
More information about the kde-core-devel
mailing list