summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2024-02-09 00:45:23 +0100
committerCarl Hetherington <cth@carlh.net>2024-02-09 00:45:23 +0100
commit98052c06cbe3bd156e1a1a715e439944671dc3ee (patch)
tree8c02464d4a1d2565273b4842272f7fadc8edfa88
parentd1d18d87fa9e0efeb9be78048a54d605ca904735 (diff)
Fix use of Z as a timezone (meaning UTC).v1.8.95
-rw-r--r--src/local_time.cc2
-rw-r--r--test/local_time_test.cc13
2 files changed, 14 insertions, 1 deletions
diff --git a/src/local_time.cc b/src/local_time.cc
index 7d090304..f125b38f 100644
--- a/src/local_time.cc
+++ b/src/local_time.cc
@@ -165,7 +165,7 @@ LocalTime::LocalTime (string s)
}
/* Timezone */
- if (pos != s.length()) {
+ if (pos != s.length() && s[pos] != 'Z') {
if (s[pos] != '+' && s[pos] != '-') {
throw TimeFormatError(s);
}
diff --git a/test/local_time_test.cc b/test/local_time_test.cc
index 8d6d997e..894f177b 100644
--- a/test/local_time_test.cc
+++ b/test/local_time_test.cc
@@ -140,6 +140,19 @@ BOOST_AUTO_TEST_CASE (local_time_basic_test)
}
{
+ dcp::LocalTime t("2024-01-23T23:21:32Z");
+ BOOST_CHECK_EQUAL(t._year, 2024);
+ BOOST_CHECK_EQUAL(t._month, 1);
+ BOOST_CHECK_EQUAL(t._day, 23);
+ BOOST_CHECK_EQUAL(t._hour, 23);
+ BOOST_CHECK_EQUAL(t._minute, 21);
+ BOOST_CHECK_EQUAL(t._second, 32);
+ BOOST_CHECK_EQUAL(t._millisecond, 0);
+ BOOST_CHECK(t._offset == dcp::UTCOffset(0, 0));
+ BOOST_CHECK_EQUAL(t.as_string(false, false), "2024-01-23T23:21:32");
+ }
+
+ {
/* Construction from boost::posix_time::ptime */
dcp::LocalTime b (boost::posix_time::time_from_string ("2002-01-20 19:03:56"));
BOOST_CHECK_EQUAL (b._year, 2002);