From 9fbe6186b1c42ed775a64b666203979285e379fb Mon Sep 17 00:00:00 2001 From: Eike Rathke Date: Wed, 12 Jun 2019 17:14:10 +0200 Subject: Resolves: tdf#125878 correct calculation of H:M:S from timestamp This apparently has been wrong since the beginning in 2009. It's a somewhat odd algorithm anyway, first calculating the time in seconds, minutes and hours, but maybe there's a reason regarding rounding, so not changing that. Change-Id: I855d2c96094b4edb1095d20bcdfebdea6d6d943a Reviewed-on: https://gerrit.libreoffice.org/73893 Reviewed-by: Eike Rathke Tested-by: Jenkins (cherry picked from commit 1436d2307d90f5ddbdcb0f129e59544306530342) Reviewed-on: https://gerrit.libreoffice.org/73914 --- connectivity/source/drivers/dbase/DTable.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'connectivity') diff --git a/connectivity/source/drivers/dbase/DTable.cxx b/connectivity/source/drivers/dbase/DTable.cxx index d8a65d0cd241..d012f11417af 100644 --- a/connectivity/source/drivers/dbase/DTable.cxx +++ b/connectivity/source/drivers/dbase/DTable.cxx @@ -186,8 +186,9 @@ void lcl_CalDate(sal_Int32 _nJulianDate,sal_Int32 _nJulianTime,css::util::DateTi double d_m = d_s / 60.0; double d_h = d_m / 60.0; _rDateTime.Hours = static_cast(d_h); - _rDateTime.Minutes = static_cast(d_m); - _rDateTime.Seconds = static_cast(( d_m - static_cast(_rDateTime.Minutes) ) * 60.0); + _rDateTime.Minutes = static_cast((d_h - static_cast(_rDateTime.Hours)) * 60.0); + _rDateTime.Seconds = static_cast(((d_m - static_cast(_rDateTime.Minutes)) * 60.0) + - (static_cast(_rDateTime.Hours) * 3600.0)); } } -- cgit