SpTime.h
上传用户:zhanglf88
上传日期:2013-11-19
资源大小:6036k
文件大小:8k
源码类别:

金融证券系统

开发平台:

Visual C++

  1. /*
  2. Cross Platform Core Code.
  3. Copyright(R) 2001-2002 Balang Software.
  4. All rights reserved.
  5. Using:
  6. CSPTimeSpan;
  7. CSPTime;
  8. */
  9. #if !defined( __SP_TIME_H__ )
  10. #define __SP_TIME_H__
  11. #include <time.h>
  12. /////////////////////////////////////////////////////////////////////////////
  13. // CSPTimeSpan and CSPTime
  14. class STKLIB_API CSPTimeSpan
  15. {
  16. public:
  17. // Constructors
  18. CSPTimeSpan();
  19. CSPTimeSpan(time_t time);
  20. CSPTimeSpan(LONG lDays, int nHours, int nMins, int nSecs);
  21. CSPTimeSpan(const CSPTimeSpan& timeSpanSrc);
  22. const CSPTimeSpan& operator=(const CSPTimeSpan& timeSpanSrc);
  23. // Attributes
  24. // extract parts
  25. LONG GetDays() const;   // total # of days
  26. LONG GetTotalHours() const;
  27. int GetHours() const;
  28. LONG GetTotalMinutes() const;
  29. int GetMinutes() const;
  30. LONG GetTotalSeconds() const;
  31. int GetSeconds() const;
  32. // Operations
  33. // time math
  34. CSPTimeSpan operator-(CSPTimeSpan timeSpan) const;
  35. CSPTimeSpan operator+(CSPTimeSpan timeSpan) const;
  36. const CSPTimeSpan& operator+=(CSPTimeSpan timeSpan);
  37. const CSPTimeSpan& operator-=(CSPTimeSpan timeSpan);
  38. BOOL operator==(CSPTimeSpan timeSpan) const;
  39. BOOL operator!=(CSPTimeSpan timeSpan) const;
  40. BOOL operator<(CSPTimeSpan timeSpan) const;
  41. BOOL operator>(CSPTimeSpan timeSpan) const;
  42. BOOL operator<=(CSPTimeSpan timeSpan) const;
  43. BOOL operator>=(CSPTimeSpan timeSpan) const;
  44. #ifdef _UNICODE
  45. // for compatibility with MFC 3.x
  46. CSPString Format(LPCSTR pFormat) const;
  47. #endif
  48. CSPString Format(LPCTSTR pFormat) const;
  49. // serialization
  50. private:
  51. time_t m_timeSpan;
  52. friend class CSPTime;
  53. };
  54. class STKLIB_API CSPTime
  55. {
  56. public:
  57. // Constructors
  58. static CSPTime PASCAL GetCurrentTime();
  59. static DWORD GetTradeSecondsOfOneDay( DWORD dwMarket = -1/*Ignored Now*/ );
  60. static DWORD GetStockTimeNext( DWORD dwDate, int ktype, DWORD dwYear = -1 );
  61. static time_t GetTimeTradeLatest( time_t tmTradeFirstToday );
  62. static double GetTimeTradeRatioOfOneDay( CSPTime tTradeLatestDay, CSPTime tNow );
  63. static time_t GetTradeOffsetToTime( int offset, time_t tmDay);
  64. static time_t GetLatestTradeTime( time_t tmNow );
  65. static BOOL InTradeTime( time_t tm, int nInflateSeconds = 180 );
  66. BOOL FromStockTimeDay( DWORD dwDate );
  67. BOOL FromStockTimeMin( DWORD dwDate, DWORD dwYear = -1 );
  68. BOOL FromStockTime( DWORD dwDate, BOOL bDayOrMin, DWORD dwYear = -1 );
  69. DWORD ToStockTimeDay( );
  70. DWORD ToStockTimeMin( );
  71. DWORD ToStockTimeSecOrder( DWORD dwStockExchange = -1/*Ignored Now*/ );
  72. DWORD ToStockTime( BOOL bDayOrMin );
  73. CSPTime();
  74. CSPTime(time_t time);
  75. CSPTime(int nYear, int nMonth, int nDay, int nHour, int nMin, int nSec,
  76. int nDST = -1);
  77. CSPTime(WORD wDosDate, WORD wDosTime, int nDST = -1);
  78. CSPTime(const CSPTime& timeSrc);
  79. CSPTime(const SYSTEMTIME& sysTime, int nDST = -1);
  80. CSPTime(const FILETIME& fileTime, int nDST = -1);
  81. const CSPTime& operator=(const CSPTime& timeSrc);
  82. const CSPTime& operator=(time_t t);
  83. // Attributes
  84. struct tm* GetGmtTm(struct tm* ptm = NULL) const;
  85. struct tm* GetLocalTm(struct tm* ptm = NULL) const;
  86. BOOL GetAsSystemTime(SYSTEMTIME& timeDest) const;
  87. time_t GetTime() const;
  88. int GetYear() const;
  89. int GetMonth() const;       // month of year (1 = Jan)
  90. int GetDay() const;         // day of month
  91. int GetHour() const;
  92. int GetMinute() const;
  93. int GetSecond() const;
  94. int GetDayOfWeek() const;   // 1=Sun, 2=Mon, ..., 7=Sat
  95. // Operations
  96. // time math
  97. CSPTimeSpan operator-(CSPTime time) const;
  98. CSPTime operator-(CSPTimeSpan timeSpan) const;
  99. CSPTime operator+(CSPTimeSpan timeSpan) const;
  100. const CSPTime& operator+=(CSPTimeSpan timeSpan);
  101. const CSPTime& operator-=(CSPTimeSpan timeSpan);
  102. BOOL operator==(CSPTime time) const;
  103. BOOL operator!=(CSPTime time) const;
  104. BOOL operator<(CSPTime time) const;
  105. BOOL operator>(CSPTime time) const;
  106. BOOL operator<=(CSPTime time) const;
  107. BOOL operator>=(CSPTime time) const;
  108. // formatting using "C" strftime
  109. CSPString Format(LPCTSTR pFormat) const;
  110. CSPString FormatGmt(LPCTSTR pFormat) const;
  111. #ifdef _UNICODE
  112. // for compatibility with MFC 3.x
  113. CSPString Format(LPCSTR pFormat) const;
  114. CSPString FormatGmt(LPCSTR pFormat) const;
  115. #endif
  116. private:
  117. time_t m_time;
  118. };
  119. inline const CSPTimeSpan& CSPTimeSpan::operator=(const CSPTimeSpan& timeSpanSrc)
  120. { m_timeSpan = timeSpanSrc.m_timeSpan; return *this; }
  121. inline LONG CSPTimeSpan::GetDays() const
  122. { return m_timeSpan / (24*3600L); }
  123. inline LONG CSPTimeSpan::GetTotalHours() const
  124. { return m_timeSpan/3600; }
  125. inline int CSPTimeSpan::GetHours() const
  126. { return (int)(GetTotalHours() - GetDays()*24); }
  127. inline LONG CSPTimeSpan::GetTotalMinutes() const
  128. { return m_timeSpan/60; }
  129. inline int CSPTimeSpan::GetMinutes() const
  130. { return (int)(GetTotalMinutes() - GetTotalHours()*60); }
  131. inline LONG CSPTimeSpan::GetTotalSeconds() const
  132. { return m_timeSpan; }
  133. inline int CSPTimeSpan::GetSeconds() const
  134. { return (int)(GetTotalSeconds() - GetTotalMinutes()*60); }
  135. inline CSPTimeSpan CSPTimeSpan::operator-(CSPTimeSpan timeSpan) const
  136. { return CSPTimeSpan(m_timeSpan - timeSpan.m_timeSpan); }
  137. inline CSPTimeSpan CSPTimeSpan::operator+(CSPTimeSpan timeSpan) const
  138. { return CSPTimeSpan(m_timeSpan + timeSpan.m_timeSpan); }
  139. inline const CSPTimeSpan& CSPTimeSpan::operator+=(CSPTimeSpan timeSpan)
  140. { m_timeSpan += timeSpan.m_timeSpan; return *this; }
  141. inline const CSPTimeSpan& CSPTimeSpan::operator-=(CSPTimeSpan timeSpan)
  142. { m_timeSpan -= timeSpan.m_timeSpan; return *this; }
  143. inline BOOL CSPTimeSpan::operator==(CSPTimeSpan timeSpan) const
  144. { return m_timeSpan == timeSpan.m_timeSpan; }
  145. inline BOOL CSPTimeSpan::operator!=(CSPTimeSpan timeSpan) const
  146. { return m_timeSpan != timeSpan.m_timeSpan; }
  147. inline BOOL CSPTimeSpan::operator<(CSPTimeSpan timeSpan) const
  148. { return m_timeSpan < timeSpan.m_timeSpan; }
  149. inline BOOL CSPTimeSpan::operator>(CSPTimeSpan timeSpan) const
  150. { return m_timeSpan > timeSpan.m_timeSpan; }
  151. inline BOOL CSPTimeSpan::operator<=(CSPTimeSpan timeSpan) const
  152. { return m_timeSpan <= timeSpan.m_timeSpan; }
  153. inline BOOL CSPTimeSpan::operator>=(CSPTimeSpan timeSpan) const
  154. { return m_timeSpan >= timeSpan.m_timeSpan; }
  155. inline const CSPTime& CSPTime::operator=(const CSPTime& timeSrc)
  156. { m_time = timeSrc.m_time; return *this; }
  157. inline const CSPTime& CSPTime::operator=(time_t t)
  158. { m_time = t; return *this; }
  159. inline time_t CSPTime::GetTime() const
  160. { return m_time; }
  161. inline int CSPTime::GetYear() const
  162. { return (GetLocalTm(NULL)->tm_year) + 1900; }
  163. inline int CSPTime::GetMonth() const
  164. { return GetLocalTm(NULL)->tm_mon + 1; }
  165. inline int CSPTime::GetDay() const
  166. { return GetLocalTm(NULL)->tm_mday; }
  167. inline int CSPTime::GetHour() const
  168. { return GetLocalTm(NULL)->tm_hour; }
  169. inline int CSPTime::GetMinute() const
  170. { return GetLocalTm(NULL)->tm_min; }
  171. inline int CSPTime::GetSecond() const
  172. { return GetLocalTm(NULL)->tm_sec; }
  173. inline int CSPTime::GetDayOfWeek() const
  174. { return GetLocalTm(NULL)->tm_wday + 1; }
  175. inline CSPTimeSpan CSPTime::operator-(CSPTime time) const
  176. { return CSPTimeSpan(m_time - time.m_time); }
  177. inline CSPTime CSPTime::operator-(CSPTimeSpan timeSpan) const
  178. { return CSPTime(m_time - timeSpan.m_timeSpan); }
  179. inline CSPTime CSPTime::operator+(CSPTimeSpan timeSpan) const
  180. { return CSPTime(m_time + timeSpan.m_timeSpan); }
  181. inline const CSPTime& CSPTime::operator+=(CSPTimeSpan timeSpan)
  182. { m_time += timeSpan.m_timeSpan; return *this; }
  183. inline const CSPTime& CSPTime::operator-=(CSPTimeSpan timeSpan)
  184. { m_time -= timeSpan.m_timeSpan; return *this; }
  185. inline BOOL CSPTime::operator==(CSPTime time) const
  186. { return m_time == time.m_time; }
  187. inline BOOL CSPTime::operator!=(CSPTime time) const
  188. { return m_time != time.m_time; }
  189. inline BOOL CSPTime::operator<(CSPTime time) const
  190. { return m_time < time.m_time; }
  191. inline BOOL CSPTime::operator>(CSPTime time) const
  192. { return m_time > time.m_time; }
  193. inline BOOL CSPTime::operator<=(CSPTime time) const
  194. { return m_time <= time.m_time; }
  195. inline BOOL CSPTime::operator>=(CSPTime time) const
  196. { return m_time >= time.m_time; }
  197. #endif // __SP_TIME_H__