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
pgppbgq3HQ4aV.pgp
Description: PGP signature
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice