summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2022-12-30 18:12:33 +0100
committerCarl Hetherington <cth@carlh.net>2022-12-30 18:12:52 +0100
commit6919bfcb39c4df829edc82dcd30968a4aca3fbee (patch)
tree1909431f491545056fee621f8a6d1bdf0f3fc596 /src
parentef35f6a6c43d2be30b82ca943c56cf06f140d24d (diff)
Change the behaviour of LocalTime::operator== to make the same time in different time zones equal.v1.8.49
Previously different offsets would mean that the times compared as not-equal.
Diffstat (limited to 'src')
-rw-r--r--src/local_time.cc8
-rw-r--r--src/local_time.h3
2 files changed, 8 insertions, 3 deletions
diff --git a/src/local_time.cc b/src/local_time.cc
index 9d36f76d..659d5c82 100644
--- a/src/local_time.cc
+++ b/src/local_time.cc
@@ -272,9 +272,11 @@ LocalTime::add_minutes (int m)
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();
}
diff --git a/src/local_time.h b/src/local_time.h
index fdb6fc90..e1baedcc 100644
--- a/src/local_time.h
+++ b/src/local_time.h
@@ -60,6 +60,9 @@ namespace dcp {
* 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
{