Previously different offsets would mean that the times compared as
not-equal.
bool
LocalTime::operator== (LocalTime const & other) const
{
- return _year == other._year && _month == other._month && _day == other._day &&
- _hour == other._hour && _minute == other._minute && _second == other._second && _millisecond == other._millisecond &&
- _offset == other._offset;
+ auto a = as_utc();
+ auto b = other.as_utc();
+
+ return a.year() == b.year() && a.month() == b.month() && a.day() == b.day() &&
+ a.hour() == b.hour() && a.minute() == b.minute() && a.second() == b.second() && a.millisecond() == b.millisecond();
}
* to parse strings of the required format (those that include time zones).
*
* See http://www.w3.org/TR/xmlschema-2/#dateTime
+ *
+ * Note that operator== for this class will return true for times that have different
+ * offsets but are the same actual time.
*/
class LocalTime
{
BOOST_CHECK(dcp::LocalTime("2014-10-10T10:00:01+01:00") > dcp::LocalTime("2014-10-10T10:00:00+01:00"));
BOOST_CHECK(dcp::LocalTime("2014-01-01T10:00:00") != dcp::LocalTime("2014-01-01T10:05:00"));
+ BOOST_CHECK(dcp::LocalTime("2014-01-01T10:00:00") == dcp::LocalTime("2014-01-01T10:00:00"));
+ BOOST_CHECK(dcp::LocalTime("2014-01-01T10:00:00+02:00") == dcp::LocalTime("2014-01-01T08:00:00"));
+ BOOST_CHECK(dcp::LocalTime("2014-01-01T10:00:00+02:00") == dcp::LocalTime("2014-01-01T11:00:00+03:00"));
}