Equals is based on year, month, day
@override bool operator ==(Object that) { if (that is HDate) { return year == that.year && month == that.month && day == that.day; } else { return false; } }