Rudiments
/home/dmuse/src/rudiments/include/rudiments/datetime.h
00001 // Copyright (c) 2000-2002 David Muse
00002 // See the COPYING file for more information.
00003 
00004 #ifndef RUDIMENTS_DATETIME_H
00005 #define RUDIMENTS_DATETIME_H
00006 
00007 #include <rudiments/private/datetimeincludes.h>
00008 
00009 #ifdef RUDIMENTS_NAMESPACE
00010 namespace rudiments {
00011 #endif
00012 
00013 class datetimeprivate;
00014 
00018 class RUDIMENTS_DLLSPEC datetime {
00019         public:
00020 
00027                 static char     *getString(time_t seconds);
00028 
00035                 static char     *getString(const void *tmstruct);
00036 
00043                 static time_t   getEpoch(const char *datestring);
00044 
00051                 static time_t   getEpoch(const void *tmstruct);
00052 
00053 
00055                 datetime();
00056 
00058                 ~datetime();
00059 
00068                 bool    initialize(const char *tmstring);
00069 
00075                 bool    initialize(time_t seconds);
00076 
00088                 bool    initialize(const void *tmstruct);
00089 
00090 
00095                 bool    getSystemDateAndTime();
00096 
00107                 bool    getHardwareDateAndTime(const char *hwtz);
00108 
00116                 bool    getAdjustedHardwareDateAndTime(const char *hwtz);
00117 
00122                 bool    setSystemDateAndTime();
00123 
00134                 bool    setHardwareDateAndTime(const char *hwtz);
00135 
00136 
00139                 int32_t getHour() const;
00140 
00143                 int32_t getMinutes() const;
00144 
00147                 int32_t getSeconds() const;
00148 
00151                 int32_t getMonth() const;
00152 
00156                 const char      *getMonthName() const;
00157 
00161                 const char      *getMonthAbbreviation() const;
00162 
00166                 int32_t getDayOfMonth() const;
00167 
00171                 int32_t getDayOfWeek() const;
00172 
00176                 int32_t getDayOfYear() const;
00177 
00181                 int32_t getYear() const;
00182 
00185                 bool    isDaylightSavingsTime() const;
00186 
00188                 const char      *getTimeZoneString() const;
00189 
00191                 int32_t getTimeZoneOffset() const;
00192                         
00203                 bool    adjustTimeZone(const char *newtz);
00204 
00215                 bool    adjustTimeZone(const char *newtz, bool ignoredst);
00216 
00217 
00220                 bool    setSeconds(int32_t seconds);
00221 
00224                 bool    setMinutes(int32_t minutes);
00225 
00228                 bool    setHours(int32_t hours);
00229 
00232                 bool    setDays(int32_t days);
00233 
00236                 bool    setMonths(int32_t months);
00237 
00240                 bool    setYears(int32_t years);
00241 
00244                 bool    addSeconds(int32_t seconds);
00245 
00248                 bool    addMinutes(int32_t minutes);
00249 
00252                 bool    addHours(int32_t hours);
00253 
00256                 bool    addDays(int32_t days);
00257 
00260                 bool    addMonths(int32_t months);
00261 
00264                 bool    addYears(int32_t years);
00265 
00266 
00273                 const char      *getString();
00274 
00276                 time_t          getEpoch() const;
00277 
00280                 const void      *getInternalTimeStructure();
00281 
00282 
00285                 static const char * const       *getTimeZoneAbbreviations();
00286 
00291                 static const int32_t            *getTimeZoneOffsets();
00292 
00299                 static bool     validDateTime(const char *string);
00300 
00301 
00312                 static  void    setTimeMutex(mutex *mtx);
00313 
00314         #include <rudiments/private/datetime.h>
00315 };
00316 
00317 #ifdef RUDIMENTS_NAMESPACE
00318 }
00319 #endif
00320 
00321 #endif