Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


Hi Jean-Baptiste,

On Tuesday, 2011-11-29 00:35:46 +0100, Eike Rathke wrote:

I do not understand why every dates before 1582-10-15 should not be
valid when only dates from 1582-10-05 to 1582-10-14 do not exist due to
the switch from julian calendar to gregorian calendar.

Well, the Date class was never declared to work with dates earlier than
when the Gregorian calendar sprang into existence ;-)

Now, my question is what to do? Is it a good idea to modify
Date::IsValid in tdate.cxx without knowing why it works in LibO 3.3 ?

I don't think so. More promising probably would be to switch to a real
calendar.. I may take a stab at that.  But first investigate how Chart
and Calc interface there.

I took a different approach. Actually the Date class implements
a proleptic Gregorian calendar, not having a gap between those Gregorian
cut-off dates, which in fact eases things a lot and is valid even in the
context of ISO 8601 and ODF. Chart did the IsValid() loop to find
a valid date after, for example, date particles 2011-02-31 were set, to
reach a valid 2011-02-28, but was "surprised" by the Gregorian check. So
I implemented Date::Normalize() and used that for the Chart needs.

I also renamed Date::IsValid() to Date::IsValidAndGregorian() to clarify
and added Date::IsValidDate() that does not check for the Gregorian
cut-off date.

In case you're interested:
http://cgit.freedesktop.org/libreoffice/core/commit/?id=dca69d5bb2d0e542de26624dd9f71fb87e1533f2
http://cgit.freedesktop.org/libreoffice/binfilter/commit/?id=1f9150ab1bbb121c59014fba7c7cd229aceeeb66
http://cgit.freedesktop.org/libreoffice/core/commit/?id=2b2f6abfcc83c4701b42c92c6209a1052324f0a5
http://cgit.freedesktop.org/libreoffice/core/commit/?id=6619955e72c1c2f29a32e82478d19147c0d7610a
http://cgit.freedesktop.org/libreoffice/core/commit/?id=07a7b2937a9427b2feb3307804ec0f527091bb92

Also fixed the misrepresentation of years<1000 with less than 4 digits
in the file format and enabled reading dates with less than 4 digits in
the year, so reading the original testcase document produces the desired
result:
http://cgit.freedesktop.org/libreoffice/core/commit/?id=7613359985a89a42417a746bcdbb25f072784733

  Eike

-- 
LibreOffice Calc developer. Number formatter stricken i18n transpositionizer.
GnuPG key 0x293C05FD : 997A 4C60 CE41 0149 0DB3  9E96 2F1A D073 293C 05FD

Attachment: pgpMjMy_Qfq08.pgp
Description: PGP signature


Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.