It's almost Friday, right?
It seems unusual to have a member function that takes input, also considering that most of the work already done in the class is computational-based. Consider getting the input in main() and constructing a Date object from this, or overload operator&gt;&gt;.
This output should be written to std::cerr instead:


std::cout &lt;&lt; "Invalid input.  Please enter a positive number: ";



This also makes it clear to the reader that this is not a standard output, but an erroneous one.
You have some magic numbers in isLearYear() and getCenturyValue().  Any of them can be in the respective functions as consts.
You don't need to initialize the private variables; that's for the constructor or initializer list.
Any member function, such as getCenturyValue(), that does not modify any data members should be const:

int Date::getCenturyValue() const
{
    return (2 * (3 - div(year / 100, 4).rem));
}


This not only makes the intent clearer, but also prevents any accidental modification of data members by giving a compiler error.
You could move your two free functions next to main() to avoid possible confusion with the member functions (at least while everything exists in one file).