Make add_minutes() work correctly with milliseconds.
authorCarl Hetherington <cth@carlh.net>
Tue, 12 May 2020 10:41:23 +0000 (12:41 +0200)
committerCarl Hetherington <cth@carlh.net>
Tue, 12 May 2020 11:12:48 +0000 (13:12 +0200)
src/local_time.cc
test/local_time_test.cc

index 1c174e502462a7d216b48a6e41bc8ad4dbc6045a..ed809d4926a088b7fd730bd425d33e69b5cf3165 100644 (file)
@@ -237,7 +237,7 @@ LocalTime::add_minutes (int m)
 {
        using namespace boost;
 
-       posix_time::ptime t(gregorian::date(_year, _month, _day), posix_time::time_duration(_hour, _minute, _second));
+       posix_time::ptime t(gregorian::date(_year, _month, _day), posix_time::time_duration(_hour, _minute, _second, _millisecond * 1000));
        t += posix_time::time_duration(0, m, 0);
        set (t);
 }
index a95bf3f6d68496a670ac97c6a2c2b6b89888da5b..4ac922408fd1a7d7e2003e531695d30baa1d464b 100644 (file)
@@ -176,6 +176,12 @@ BOOST_AUTO_TEST_CASE (local_time_add_minutes_test)
                t.add_minutes (7);
                BOOST_CHECK_EQUAL (t.as_string(), "2018-02-01T00:02:00+01:00");
        }
+
+       {
+               dcp::LocalTime t("2018-01-31T23:55:00.123");
+               t.add_minutes (7);
+               BOOST_CHECK_EQUAL (t, dcp::LocalTime("2018-02-01T00:02:00.123"));
+       }
 }