00001 #ifndef __J2K__Time_CPP__ 00002 #define __J2K__Time_CPP__ 00003 00004 #include <j2k/etc/Divers/Time.hpp> 00005 00006 inline Time::Time() 00007 : lflag( 0 ), aflag( 0 ) 00008 { 00009 time( &T ); 00010 } 00011 00012 inline void Time::mark() 00013 { 00014 lflag = 0; 00015 aflag = 0; 00016 time(&T); 00017 } 00018 00019 inline const char* Time::ascii() 00020 { 00021 updateAscii(); 00022 return Ascii; 00023 } 00024 00025 // Difference in seconds: 00026 inline int Time::delta( Time* dt ) const 00027 { 00028 return difftime(T, dt->T); 00029 } 00030 00031 inline int Time::DaylightSavings() 00032 { 00033 updateLocal(); 00034 return local.tm_isdst; 00035 } 00036 00037 // Since January 1st 00038 inline int Time::DayOfYear() 00039 { 00040 updateLocal(); 00041 return local.tm_yday; 00042 } 00043 00044 // Since Sunday 00045 inline int Time::DayOfWeek() 00046 { 00047 updateLocal(); 00048 return local.tm_wday; 00049 } 00050 00051 // Years since 1900 00052 inline int Time::Since1900() 00053 { 00054 updateLocal(); 00055 return local.tm_year; 00056 } 00057 00058 // Since January 00059 inline int Time::Month() 00060 { 00061 updateLocal(); 00062 return local.tm_mon; 00063 } 00064 00065 inline int Time::DayOfMonth() 00066 { 00067 updateLocal(); 00068 return local.tm_mday; 00069 } 00070 00071 // Since midnight, in 24h format 00072 inline int Time::Hour() 00073 { 00074 updateLocal(); 00075 return local.tm_hour; 00076 } 00077 00078 inline int Time::Minute() 00079 { 00080 updateLocal(); 00081 return local.tm_min; 00082 } 00083 00084 inline int Time::Second() 00085 { 00086 updateLocal(); 00087 return local.tm_sec; 00088 } 00089 00090 inline void Time::updateLocal() 00091 { 00092 if ( !lflag ) { 00093 local = *localtime(&T); 00094 lflag++; 00095 } 00096 } 00097 00098 inline void Time::updateAscii() 00099 { 00100 if ( !aflag ) { 00101 updateLocal(); 00102 strcpy( Ascii, asctime(&local) ); 00103 aflag++; 00104 } 00105 } 00106 00107 #endif