[Libreoffice] [REVIEW][3-4] date change regression fdo#44385
Andrew Douglas Pitonyak
andrew at pitonyak.org
Thu Jan 19 18:03:02 PST 2012
On 01/16/2012 08:01 AM, Eike Rathke wrote:
> Hi Noel,
>
> On Friday, 2012-01-13 09:51:33 +0000, Noel Power wrote:
>
>> this change ( the variant ) is what is on master, here the
>> intention is as Andrew pointed out ( in a previous mail discussing
>> the regression ) to allow operations on date types return dates (
>> regardless of the operation ) which seems reasonable.
> Not every operation on date types should return a date, i.e.
> substracting two dates should return a number of days (I don't think
> adding/multiplying/dividing two dates makes sense, but it should return
> a number of days as well).
>
> Eike
The original code verified that a date was used in at least one
argument, and, if so, then a date is returned. Eike, to follow your
suggestion of NOT returning a date if we expect that the answer should
be a number of days, then we would want to check both parameters, and if
both are of type date then return a double rather than date. If you
really desire to strive for accuracy, then what you want to say is that
if two dates are involved and there is a subtraction, then you desire
the elapsed time between the two date objects.
I need to be careful in what I say because I am not intimate with the
code, but, I believe that a date is internally represented as a double.
I also seem to remember that a "time" is a date that has "zero days".
This leaves a day that cannot be represented (well, it won't print as a
date anyway, at least I think it did not when I last tested it long
before LibO existed).
One may choose to argue that date arithmetic makes no sense (ie, what
does it mean to add today to today, or to multiply today by 2), but I
believe that the original solution was written to allow for the common
case and do the expected thing. So, Perhaps I have code such as (time_1
+ time_2 - time_3), the intent seems to be to determine the difference
between time_2 and time_3 and add that to time_1. In the original code,
that would work. I suppose that if we add a check to verify that one
parameter is a date and that the other is not, then our result would be
mostly as expected, but that feels onerous. It is a bit difficult and
fraught with peril, however, because I believe that if the new time
passes midnight (ie, 24 hours), then it will suddenly display as a date
rather than a time.
--
Andrew Pitonyak
My Macro Document: http://www.pitonyak.org/AndrewMacro.odt
Info: http://www.pitonyak.org/oo.php
More information about the LibreOffice
mailing list