Advertisement
Geoff_Montee

DateTime.h

Oct 25th, 2012
2,356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.32 KB | None | 0 0
  1. #include <sstream>
  2. #include <iostream>
  3. #include <ctime>
  4. #include <exception>
  5.  
  6. #ifndef DATETIME_H
  7. #define DATETIME_H
  8.  
  9. class DateTimeDuration
  10. {
  11.  
  12.     public:
  13.         static const unsigned int DEFAULT_DAYS = 0;
  14.         static const unsigned int DEFAULT_HOURS = 0;
  15.         static const unsigned int DEFAULT_MINS = 0;
  16.         static const unsigned int DEFAULT_SECS = 0;
  17.         static const unsigned int DEFAULT_MSECS = 0;
  18.         static const bool DEFAULT_IS_NEGATIVE = false;
  19.        
  20.         DateTimeDuration(unsigned int _days = DEFAULT_DAYS, unsigned int _hours = DEFAULT_HOURS, unsigned int _minutes = DEFAULT_MINS,
  21.             unsigned int _seconds = DEFAULT_SECS, unsigned int _milliseconds = DEFAULT_MSECS, bool _is_negative = DEFAULT_IS_NEGATIVE);
  22.         DateTimeDuration(const DateTimeDuration& dur);
  23.        
  24.         int compare(const DateTimeDuration& rhs) const;
  25.         DateTimeDuration& operator=(const DateTimeDuration& rhs);
  26.         bool operator==(const DateTimeDuration& rhs) const;
  27.         bool operator!=(const DateTimeDuration& rhs) const;
  28.         bool operator<(const DateTimeDuration& rhs) const;
  29.         bool operator<=(const DateTimeDuration& rhs) const;
  30.         bool operator>(const DateTimeDuration& rhs) const;
  31.         bool operator>=(const DateTimeDuration& rhs) const;    
  32.         void setDateTimeDuration(unsigned int _days, unsigned int _hours, unsigned int _minutes,
  33.             unsigned int _seconds, unsigned int _milliseconds, bool _is_negative);
  34.         bool isZero() const;
  35.         unsigned int days() const;
  36.         unsigned int days(unsigned int _days);         
  37.         unsigned int hours() const;
  38.         unsigned int hours(unsigned int _hours);
  39.         unsigned int minutes() const;
  40.         unsigned int minutes(unsigned int _minutes);
  41.         unsigned int seconds() const;
  42.         unsigned int seconds(unsigned int _seconds);
  43.         unsigned int milliseconds() const;
  44.         unsigned int milliseconds(unsigned int _milliseconds);
  45.         bool isNegative() const;
  46.         bool isNegative(bool _is_negative);
  47.    
  48.     private:
  49.         unsigned int __days;
  50.         unsigned int __hours;
  51.         unsigned int __minutes;
  52.         unsigned int __seconds;
  53.         unsigned int __milliseconds;
  54.         bool __is_negative;
  55. };
  56.  
  57. std::ostream& operator<<(std::ostream& os, const DateTimeDuration& dtd);
  58.  
  59. class DateTime
  60. {
  61.     public:
  62.         static const unsigned int DEFAULT_YEAR = 1970;
  63.         static const unsigned int DEFAULT_MONTH = 1;
  64.         static const unsigned int DEFAULT_DAY = 1;
  65.         static const unsigned int DEFAULT_HOUR = 0;
  66.         static const unsigned int DEFAULT_MIN = 0;
  67.         static const unsigned int DEFAULT_SEC = 0;
  68.         static const unsigned int DEFAULT_MSEC = 0;
  69.        
  70.         static const unsigned short MONTH_LENGTHS[];
  71.        
  72.         DateTime(unsigned int _year = DEFAULT_YEAR, unsigned int _month = DEFAULT_MONTH, unsigned int _day = DEFAULT_DAY, unsigned int _hour = DEFAULT_HOUR,
  73.             unsigned int _minute = DEFAULT_MIN, unsigned int _second = DEFAULT_SEC, unsigned int _millisecond = DEFAULT_MSEC);
  74.         DateTime(const DateTime& dt);
  75.         DateTime(const tm& time_struct);
  76.         DateTime(const time_t& time);
  77.            
  78.         int compare(const DateTime& rhs) const;
  79.         DateTime& operator=(const DateTime& rhs);
  80.         bool operator==(const DateTime& rhs) const;
  81.         bool operator!=(const DateTime& rhs) const;
  82.         bool operator<(const DateTime& rhs) const;
  83.         bool operator<=(const DateTime& rhs) const;
  84.         bool operator>(const DateTime& rhs) const;
  85.         bool operator>=(const DateTime& rhs) const;
  86.         void setDate(unsigned int _year, unsigned int _month, unsigned int _day);
  87.         void setTime(unsigned int _hour, unsigned int _minute, unsigned int _second, unsigned int _millisecond);
  88.         void setDateTime(unsigned int _year, unsigned int _month, unsigned int _day, unsigned int _hour, unsigned int _minute, unsigned int _second, unsigned int _millisecond);
  89.         unsigned int year() const;
  90.         unsigned int year(unsigned int _year);
  91.         unsigned int month() const;
  92.         unsigned int month(unsigned int _month);
  93.         unsigned int day() const;
  94.         unsigned int day(unsigned int _day);
  95.         unsigned int dayOfYear() const;
  96.         unsigned int dayOfYear(unsigned int _dayOfYear);           
  97.         unsigned int hour() const;
  98.         unsigned int hour(unsigned int _hour);
  99.         unsigned int minute() const;
  100.         unsigned int minute(unsigned int _minute);
  101.         unsigned int second() const;
  102.         unsigned int second(unsigned int _second);
  103.         unsigned int millisecond() const;
  104.         unsigned int millisecond(unsigned int _millisecond);
  105.         DateTime subtractDays(unsigned int _days) const;
  106.         DateTime addDays(unsigned int _days) const;
  107.         DateTime subtractHours(unsigned int _hours) const;
  108.         DateTime addHours(unsigned int _hours) const;  
  109.         DateTime subtractMinutes(unsigned int _minutes) const;
  110.         DateTime addMinutes(unsigned int _minutes) const;  
  111.         DateTime subtractSeconds(unsigned int _seconds) const;
  112.         DateTime addSeconds(unsigned int _seconds) const;  
  113.         DateTime subtractMilliseconds(unsigned int _milliseconds) const;
  114.         DateTime addMilliseconds(unsigned int _milliseconds) const;
  115.         DateTime subtract(unsigned int _days = 0, unsigned int _hours = 0, unsigned int _minutes = 0,
  116.             unsigned int _seconds = 0, unsigned int _milliseconds = 0) const;
  117.         DateTime add(unsigned int _days = 0, unsigned int _hours = 0, unsigned int _minutes = 0,
  118.             unsigned int _seconds = 0, unsigned int _milliseconds = 0) const;  
  119.         DateTime subtract(const DateTimeDuration& dur) const;
  120.         DateTime add(const DateTimeDuration& dur) const;
  121.         DateTimeDuration timeBetween(const DateTime& rhs) const;
  122.         static bool isLeapYear(unsigned int year);
  123.         static bool validDate(unsigned int _year, unsigned int _month, unsigned int _day);
  124.         static unsigned short daysInYear(unsigned int _year);
  125.         static unsigned short daysInMonth(unsigned int _year, unsigned int _month);
  126.         static unsigned short getDayOfYear(unsigned int _year, unsigned int _month, unsigned int _day);
  127.         static DateTime getReverseDayOfYear(unsigned int _year, unsigned int _dayOfYear);
  128.         time_t mktime() const;
  129.         double difftime(const DateTime& rhs) const;
  130.         static DateTime now();
  131.         static DateTime now_utc();
  132.        
  133.         class InvalidDateTimeException: public std::exception
  134.         {
  135.             public:
  136.                 InvalidDateTimeException() throw() : std::exception()
  137.                 {
  138.                         errorString = "Invalid DateTime";
  139.                 }
  140.                
  141.                 InvalidDateTimeException(unsigned int _year, unsigned int _month, unsigned int _day, unsigned int _hour,
  142.                     unsigned int _minute, unsigned int _second, unsigned int _millisecond) throw() : std::exception()
  143.                 {
  144.                     std::ostringstream oss;
  145.                     oss << "Invalid DateTime: year - " << _year << ", month - " << _month << ", day - " << _day
  146.                         << ", hour - " << _hour << ", minute - " << _minute << ", second - " << _second << ", millisecond - " << _millisecond;
  147.                        
  148.                     errorString = oss.str();
  149.                 }
  150.        
  151.                 InvalidDateTimeException(const InvalidDateTimeException& e) throw() : std::exception(e)
  152.                 {
  153.                     errorString = e.errorString;
  154.                 }
  155.    
  156.                 InvalidDateTimeException(const std::string& _errorString) throw() : std::exception()
  157.                 {
  158.                     errorString = _errorString;
  159.                 }
  160.        
  161.                 ~InvalidDateTimeException() throw()
  162.                 {
  163.                
  164.                 }
  165.    
  166.                 virtual const char* what() const throw()
  167.                 {
  168.                     return errorString.c_str();
  169.                 }
  170.    
  171.                 virtual std::string getError()
  172.                 {
  173.                     return errorString;
  174.                 }
  175.        
  176.             protected:
  177.                 std::string errorString;
  178.         };     
  179.        
  180.     private:
  181.         unsigned int __year;
  182.         unsigned int __month;
  183.         unsigned int __day;
  184.         unsigned int __hour;
  185.         unsigned int __minute;
  186.         unsigned int __second;
  187.         unsigned int __millisecond;
  188. };
  189.  
  190. std::ostream& operator<<(std::ostream& os, const DateTime& ddt);
  191.  
  192. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement