public boolean equals(Object obj) {
        if (!(obj instanceof PartialTimestamp)) {
            return false;
        } else {
            PartialTimestamp pt = (PartialTimestamp)obj;
            
            for (int field = CENTURY; field < FIELD_COUNT; field++) {
                if (this.isSet(field) && pt.isSet(field) &&
                        (this.get(field) != pt.get(field))) {
                    return false;
                } else if (this.isSet(field) != pt.isSet(field)) {
                    return false;
                }
                
                if (this.getModifier(field) != pt.getModifier(field)) {
                    return false;
                }
            }
            return ((this.lastHourSet == pt.lastHourSet) &&
                    (this.getLastDayFieldSet() == pt.getLastDayFieldSet()));
        }
    }