O'Reilly logo

Safe C++ by Vladimir Kushnir

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Appendix J. Source Code for the file scpp_date.hpp and scpp_date.cpp

File scpp_date.hpp

#ifndef __SCPP_DATE_HPP_INCLUDED__ #define __SCPP_DATE_HPP_INCLUDED__ #include <iostream> #include <string> #include "scpp_assert.hpp" #include "scpp_types.hpp" /* Date class. Features: All date arithmetic operators and comparisons are provided. Date arithmetic is implemented as an integer arithmetic. No Y2K problems -- all years must be >= 1900. Default output format is American (MM/DD/YYYY). In debug one can see the date in debugger as yyyymmdd -- just point your debugger to a yyyymmdd_ data member. No implicit type conversions are allowed. */ namespace scpp { class Date { public: // Creates an empty (invalid in terms of IsValid()) date. Date(); // Input format: "mm/dd/yyyy". explicit Date(const char* str_date); // Same as above. explicit Date(const std::string& str_date); // Date from integer in the YYYYMMDD format, e.g. Dec. 26, 2011 is 20111226. explicit Date(unsigned yyyymmdd); // Year must be 4-digit, // month is 1-based, i.e. 1 .. 12, // day is 1 .. MonthLength() <= 31 Date(unsigned year, unsigned month, unsigned day); // Returns true if the date is not empty, // as is the case when it is created by the default constructor. // Most operations on invalid date are not allowed // (will call error handler). bool IsValid() const { return date_!=0; } // Returns date in YYYYMMDD format, e.g. Dec. 26, 2011 is 20111226. unsigned AsYYYYMMDD() const; // 4-digit year. unsigned Year() const; enum { ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required