[Libreoffice] [REVIEW][3-4] date change regression fdo#44385

Andrew Douglas Pitonyak andrew at pitonyak.org
Thu Jan 19 18:10:36 PST 2012


On 01/19/2012 09:03 PM, Andrew Douglas Pitonyak wrote:
> 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.
>
Oh my.... Looks like Date and Time are represented as different types 
internally.

-- 
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