KDateTime: new revised version

Nicolas Goutte nicolasg at snafu.de
Sat Nov 26 17:24:42 GMT 2005


On Friday 25 November 2005 13:28, David Jarvie wrote:
> On Friday 25 November 2005 11:30, Shaheed wrote:
> >On Thursday 24 November 2005 13:13, Nicolas Goutte wrote:
(...)
> >As I suggest above, if we treat the "-0500" simply as an offset from GMT,
> > with no reference to timezone (or KTimezone*), doesn't this use case work
> > exactly as one might expect?
>
> I earlier today proposed that KDateTime should be able to store an offset
> from UTC (so as to retain information from ISO 8601 strings), 

> and Nicholas
> thought that this should be treated as a local time, not as UTC. 

As this answer seemed for me to be light-years away from what I have answered, 
I have tried to think more deeply about the problem that we have in this 
thread.

After thinking, I think the problem is that "local time" is defined in two 
ways, which are not exactly compatible, if not conflicting:
- a time in the system's time zone. (That is what the C library and QDateTime 
assume.)
- a time (wall time) in an arbitrary place. (That is probably the common 
English sence.)

The problem of my answers of this thread is that I have never thought about 
the common sence meaning of "local time".

So to start again the discussion on a clean base.

A QDateTime which is Qt::LocalTime should be transformed by default to a 
KDateTime having the current system's timezone. (Of course, the other 
constructors can have parameters to tweak such a transformation in a 
different way.)

To be back to the answer above, I think that a date/time with an offset is 
different than a pure UTC date, especially because it has an offset.
(As I have wriiten in an answer to Shaheed's private email, nobody would buy 
clocks and watches if they could only display UTC.)

Also for KDateTime, for member function returning if the date/time is UTC, a 
date with a non-zero offset should return false. Similarly the member 
function for testing if it is a local time (in the sence of QDateTime) should 
return false too (as we do not know if the offset corrsepond to the system's 
timezone, even if perhaps the time offset would match.)

Of course perhaps there would be another member function for testing if a date 
is neither UTC nor the local time (again in QDateTime's sence). For such a 
function, a dtae/time with non-zero offset should return true.

A little side note: perhaps we must be careful what the UTC checking function 
returns in the case of a UTC timezone like UTC, Zulu, Universal, UCT, GMT and 
all the other alternative names (already the Etc subdirectory seems to have 
them all again). (I have not checked the current code to see if it already 
return true in such cases.)

As for the "local time" uncertainty, perhaps it would be useful to add a note 
in the Doxygen comment of KDateTime to explain the two meanings.

Now that I was more explicit, perhaps less misunderstandings will happen in 
the rest of the discussion.

> But I
> agree with what you say above, and I think that the "UTC with offset"
> variant should simply be treated as UTC. The KDateTime class should treat
> the offset merely as a comment, and only use it in the toString() method.

I do not mind the internal representation. What I would like is that for 
interaction with other formats than the internal formats, that the time 
offset is not lost (unlike what Shaheed seems to prefer).

>
> --
> David Jarvie.
> KAlarm author & maintainer.
> http://www.astrojar.org.uk/linux/kalarm.html

Have a nice day!





More information about the kde-core-devel mailing list