public int compareTo(Date date) {
        if (this._y == date.getYear()) {
            if (this._m == date.getMonth()) {
                if (this._d == date.getDay()) {
                    return 0; // =
                }
                else if (this._d > date.getDay()) {
                    return 1; // >
                }
                else { // this._d < date.getDay()
                    return -1; // <
                }
            }
            else if (this._m > date.getMonth()) {
                return 1; // >
            }
            else { // this._m < date.getMonth()
                return -1; // <
            }
        }
        else if (this._y > date.getYear()) {
            return 1; // >
        }
        else { // this._y < date.getYear()
            return -1; // <
        }
    }