diff options
author | Hossein <hossein@libreoffice.org> | 2022-02-25 00:22:11 +0100 |
---|---|---|
committer | Eike Rathke <erack@redhat.com> | 2022-02-25 19:12:41 +0100 |
commit | 0308e48e46cee2f56a6239c8479d26185146d74a (patch) | |
tree | dbbbfd146029268e9bb2f6129a85d905a9d41e1e /i18npool/inc | |
parent | 9cd4da63b6ed19b71a2475fccb4ab135f0a87873 (diff) |
tdf#145759 30.6001 -> monthDaysWithoutJanFeb
30.6001 shows month days without Jan and Feb.
According to the below link, it is calcuated as (365-31-28)/10 = 30.6
but because of a floating point bug, it was used as 30.6001 as a
workaround.
"30.6001, 25 year old hack?"
https://www.hpmuseum.org/cgi-sys/cgiwrap/hpmuseum/archv011.cgi?read=31650
The value 30.6 is used as i18nutil::monthDaysWithoutJanFeb here
instead of 30.6001. The new value is ~30.60000038 which is > 30.6, so
the calculations should be correct. In order to make sure, a unit test
is added, and part of the values are checked against the values
calculated by this website:
Julian Day and Civil Date Calculator
https://core2.gsfc.nasa.gov/time/julian.html
Change-Id: I8cc7e046514dc3de652a1c37399e351cb2b614dc
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/125813
Tested-by: Jenkins
Reviewed-by: Eike Rathke <erack@redhat.com>
Diffstat (limited to 'i18npool/inc')
-rw-r--r-- | i18npool/inc/calendar_hijri.hxx | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/i18npool/inc/calendar_hijri.hxx b/i18npool/inc/calendar_hijri.hxx index b25c4cb0b44f..c02fa31e5d94 100644 --- a/i18npool/inc/calendar_hijri.hxx +++ b/i18npool/inc/calendar_hijri.hxx @@ -36,12 +36,12 @@ private: void mapToGregorian() override; void mapFromGregorian() override; -private: - static double NewMoon(sal_Int32 n); - static void getHijri(sal_Int32 *day, sal_Int32 *month, sal_Int32 *year); - static void ToGregorian(sal_Int32 *day, sal_Int32 *month, sal_Int32 *year); - static void getGregorianDay(sal_Int32 jd, sal_Int32 *pnDay, sal_Int32 *pnMonth, sal_Int32 *pnYear); - static sal_Int32 getJulianDay(sal_Int32 day, sal_Int32 month, sal_Int32 year); +public: + static double SAL_DLLPUBLIC_EXPORT NewMoon(sal_Int32 n); + static void SAL_DLLPUBLIC_EXPORT getHijri(sal_Int32 *day, sal_Int32 *month, sal_Int32 *year); + static void SAL_DLLPUBLIC_EXPORT ToGregorian(sal_Int32 *day, sal_Int32 *month, sal_Int32 *year); + static void SAL_DLLPUBLIC_EXPORT getGregorianDay(sal_Int32 jd, sal_Int32 *pnDay, sal_Int32 *pnMonth, sal_Int32 *pnYear); + static sal_Int32 SAL_DLLPUBLIC_EXPORT getJulianDay(sal_Int32 day, sal_Int32 month, sal_Int32 year); }; } |