Allow omitting second fraction in DateTime::fromIsoString
This commit is contained in:
parent
44e4d1335a
commit
98edb5a67c
|
@ -171,10 +171,11 @@ std::pair<DateTime, TimeSpan> DateTime::fromIsoString(const char *str)
|
||||||
} else {
|
} else {
|
||||||
++valueIndex;
|
++valueIndex;
|
||||||
}
|
}
|
||||||
} else if ((c == '+') && (++valueIndex == deltaHourIndex)) {
|
} else if ((c == '+') && (++valueIndex >= secondsIndex)) {
|
||||||
|
valueIndex = deltaHourIndex;
|
||||||
deltaNegative = false;
|
deltaNegative = false;
|
||||||
} else if ((c == 'Z') && (++valueIndex == deltaHourIndex)) {
|
} else if ((c == 'Z') && (++valueIndex >= secondsIndex)) {
|
||||||
valueIndex += 2;
|
valueIndex = deltaHourIndex + 2;
|
||||||
} else if (c == '\0') {
|
} else if (c == '\0') {
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -159,6 +159,9 @@ void ChronoTests::testDateTime()
|
||||||
// test further variants
|
// test further variants
|
||||||
CPPUNIT_ASSERT_EQUAL_MESSAGE("Zulu time", TimeSpan(), DateTime::fromIsoString("2017-08-23T19:40:15.985077682Z").second);
|
CPPUNIT_ASSERT_EQUAL_MESSAGE("Zulu time", TimeSpan(), DateTime::fromIsoString("2017-08-23T19:40:15.985077682Z").second);
|
||||||
CPPUNIT_ASSERT_EQUAL_MESSAGE("no minutes", TimeSpan::fromHours(3), DateTime::fromIsoString("2017-08-23T19:40:15.985077682+03").second);
|
CPPUNIT_ASSERT_EQUAL_MESSAGE("no minutes", TimeSpan::fromHours(3), DateTime::fromIsoString("2017-08-23T19:40:15.985077682+03").second);
|
||||||
|
const auto test6 = DateTime::fromIsoString("1970-01-01T01:02:03+01:00");
|
||||||
|
CPPUNIT_ASSERT_EQUAL_MESSAGE("no seconds fraction", DateTime::fromDateAndTime(1970, 1, 1, 1, 2, 3), test6.first);
|
||||||
|
CPPUNIT_ASSERT_EQUAL_MESSAGE("no seconds fraction", TimeSpan::fromHours(1.0), test6.second);
|
||||||
// test invalid characters
|
// test invalid characters
|
||||||
CPPUNIT_ASSERT_THROW_MESSAGE("digits after Z", DateTime::fromIsoString("2017-O8-23T19:40:15.985077682Z02:00"), ConversionException);
|
CPPUNIT_ASSERT_THROW_MESSAGE("digits after Z", DateTime::fromIsoString("2017-O8-23T19:40:15.985077682Z02:00"), ConversionException);
|
||||||
CPPUNIT_ASSERT_THROW_MESSAGE("invalid letter", DateTime::fromIsoString("2017-O8-23T19:40:15.985077682:+02:00"), ConversionException);
|
CPPUNIT_ASSERT_THROW_MESSAGE("invalid letter", DateTime::fromIsoString("2017-O8-23T19:40:15.985077682:+02:00"), ConversionException);
|
||||||
|
|
Loading…
Reference in New Issue