This paper derives and documents key algorithms that enable one to write their own date class. The purpose of this paper is to allow everyone to easily write their own date class, using algorithms that are well documented, and easily modified to meet individual needs. The algorithms presented are efficient. They require no external tables. They do not require C++11 or C++1y features, though if C++11 is available, the algorithms should be noexcept, and if C++1y is available, they can trivially be made constexpr.