115 if ( ! ::SystemTimeToFileTime(&st, &ft) || ! ::LocalFileTimeToFileTime(&ft,
this) )
142 ULONGLONG ull = m_Refer();
145 return static_cast<time_t
>(ull & DWORD_MAX);
163 return m_Refer() == 0;
175 return ::CompareFileTime(
this, &t);
185 (m_Refer()) += (llMs * 10000);
196 (m_Refer()) -= (llMs * 10000);
229 LONGLONG r = (m_Refer() - t.m_Refer()) / 10000;
258 const ULONGLONG& m_Refer(
void)
const
260 return *
reinterpret_cast<const ULONGLONG*
>(&(_super::dwLowDateTime));
263 ULONGLONG& m_Refer(
void)
265 return *
reinterpret_cast<ULONGLONG*
>(&(_super::dwLowDateTime));
355 if ( ! ::FileTimeToLocalFileTime(&ft, &ff) || ! ::FileTimeToSystemTime(&ff,
this) )
380 void Set(
int iYear,
int iMonth,
int iDay)
383 _super::wYear = ToWord(iYear);
384 _super::wMonth = ToWord(iMonth);
385 _super::wDay = ToWord(iDay);
389 WORD
GetYear(
void)
const {
return _super::wYear; }
391 WORD
GetMonth(
void)
const {
return _super::wMonth; }
393 WORD
GetDay(
void)
const {
return _super::wDay; }
395 WORD
GetHour(
void)
const {
return _super::wHour; }
401 WORD
GetMillSec(
void)
const {
return _super::wMilliseconds; }
408 memset(&(_super::wYear), 0,
sizeof(
SYSTEMTIME));
418 return _super::wYear == 0;
431 return !! ::SystemTimeToFileTime(
this, &ft);
444 if ( r != 0 ) {
return r; }
446 if ( r != 0 ) {
return r; }
448 if ( r != 0 ) {
return r; }
450 if ( r != 0 ) {
return r; }
452 if ( r != 0 ) {
return r; }
454 if ( r != 0 ) {
return r; }
465 int y = _super::wYear + iYear;
466 _super::wYear =
static_cast<WORD
>(y);
480 bool boRc = !! ::SystemTimeToFileTime(
this, &ft);
481 iMonth += _super::wMonth;
482 while ( iMonth > 12 )
492 _super::wMonth =
static_cast<WORD
>(iMonth);
495 while ( ! ::SystemTimeToFileTime(
this, &ft) )
498 if ( _super::wDay == 0 )
579 if ( ! ::SystemTimeToFileTime(
this, &ft1)
580 || ! ::LocalFileTimeToFileTime(&ft1, &ft2)
581 || ! ::FileTimeToSystemTime(&ft2, &st) )
598 if ( ! ::SystemTimeToFileTime(
this, &ft1)
599 || ! ::FileTimeToLocalFileTime(&ft1, &ft2)
600 || ! ::FileTimeToSystemTime(&ft2, &st) )
621 if ( ! ::SystemTimeToTzSpecificLocalTime(lpTzInfo, &r, &st) )
651 s += _T(
"000000000000000000");
652 _super::wYear =
static_cast<WORD
>(s.
Mid(0, 4).
ToInt());
653 _super::wMonth =
static_cast<WORD
>(s.
Mid(4, 2).
ToInt());
654 _super::wDay =
static_cast<WORD
>(s.
Mid(6, 2).
ToInt());
655 _super::wHour =
static_cast<WORD
>(s.
Mid(8, 2).
ToInt());
656 _super::wMinute =
static_cast<WORD
>(s.
Mid(10, 2).
ToInt());
657 _super::wSecond =
static_cast<WORD
>(s.
Mid(12, 2).
ToInt());
658 _super::wMilliseconds =
static_cast<WORD
>(s.
Mid(14, 3).
ToInt());
659 _super::wDayOfWeek = 0;
670 if ( lpszFormat == NULL )
672 lpszFormat = _T(
"%Y-%m-%d %H:%M:%S");
678 tTime.tm_year =
wYear - 1900;
679 tTime.tm_mon =
wMonth - 1;
680 tTime.tm_mday =
wDay;
681 tTime.tm_hour =
wHour;
684 if ( _tcsftime(s.
GetBuffer(1024), 1024, lpszFormat, &tTime) == 0 )
729 _iYear = _super::wYear - 1868 +1;
732 st.
Set(1926, 12, 25);
736 _iYear = _super::wYear - 1912 +1;
743 _iYear = _super::wYear - 1926 +1;
750 _iYear = _super::wYear - 1989 +1;
753 _iYear = _super::wYear - 2019 +1;
775 ::GetSystemTime(&st);
787 DWORD dwYear = t.
wYear;
789 DWORD dwDay = t.
wDay;
790 if ( dwMonth == 1 || dwMonth == 2 )
795 double d = dwYear + (dwYear / 4) - (dwYear / 100) + (dwYear / 400) + (2.6 * dwMonth) + 1.6 + dwDay;
807 if ( (dwYear % 4) == 0 && (dwYear % 100) != 0 || (dwYear % 400) == 0 )
825 return IsLeap(dwYear) ? 29 : 28;
844 ::FileTimeToSystemTime(
this, &st);
845 return st.
Format(lpszFormat);
855 ::GetSystemTimeAsFileTime(&ft);
static CFileTimeEx GetCurrent(void)
[取得] 現在の時間
CFileTimeEx operator+(LONGLONG llMs) const
[取得] 時間加算
CFileTimeEx operator-=(LONGLONG llMs) const
[取得] 時間減算
CStr Format(LPCTSTR lpszFormat=NULL) const
[作成] 文字列作成
bool IsEmpty(void) const
[確認] 状態確認
CFileTimeEx & operator=(const FILETIME &ft)
[代入] 代入
CFileTimeEx(const SYSTEMTIME &st)
代入コンストラクタ
CFileTimeEx & operator=(const SYSTEMTIME &st)
[代入] 代入
time_t ToTimet(void)
[取得] time_t型で取得
LONGLONG operator-(const CFileTimeEx &t) const
[取得] 時間差
CFileTimeEx(bool b)
コンストラクタ
CFileTimeEx(const FILETIME &ft)
代入コンストラクタ
CFileTimeEx(const time_t &tm)
代入コンストラクタ
virtual INT_PTR Compare(const CFileTimeEx &t) const
[確認] 比較
CFileTimeEx & operator=(const time_t &tm)
[代入] 代入
CFileTimeEx & operator-=(LONGLONG llMs)
[取得] 時間減算
CFileTimeEx & operator+=(LONGLONG llMs)
[取得] 時間加算
void ReleaseBuffer(void)
[操作] 割り当てたバッファを開放.
static CStrT Fmt(const TCHAR *lpszFormat,...)
[作成] 書式付き文字列作成
int Remove(TYP t)
[処理] 文字削除.
CStrT Mid(INDEX iOffset, size_t iSize=INVALID_SIZE) const
[作成] 範囲取得.
int ToInt(INDEX iOffset=0, int iBase=10) const
[取得] 数値(int)へ変換
TYP * GetBuffer(size_t iLength=0)
[操作] 書き込みバッファ要求.
static DWORD GetDayOfTheWeek(const SYSTEMTIME &t)
[計算] 曜日計算.
CSystemTime LocalToUtc(void) const
[取得] UTC取得
virtual INT_PTR Compare(const CSystemTime &t) const
[確認] 比較
CSystemTime UtcToLocal(void) const
[取得] ローカルタイム取得
CStr Format(LPCTSTR lpszFormat=NULL) const
[作成] 文字列作成
static DWORD GetEndOfMonth(DWORD dwYear, DWORD dwMonth)
[計算] 末日計算
CSystemTime(const FILETIME &ft)
代入コンストラクタ
bool IsEmpty(void) const
[確認] 状態確認
CSystemTime & AddMinute(int iMinute)
[加算] 分加算
static bool IsLeap(DWORD dwYear)
[確認] 閏年判定
CSystemTime(const time_t &tm)
代入コンストラクタ
LONGLONG operator-(const CSystemTime &t) const
[取得] 時間差
WORD GetSecond(void) const
[取得] 秒取得
WORD GetMinute(void) const
[取得] 分取得
static CSystemTime GetCurrent(void)
[取得] 現在の時間(LOCAL)
CSystemTime LocalToTzSpecificLocal(LPTIME_ZONE_INFORMATION lpTzInfo) const
[取得] 指定ローカルタイム取得
WORD GetHour(void) const
[取得] 時取得
int ToJapaneseEra(int &_iYear) const
[作成] 和年号作成.
void StringTo(LPCTSTR lpsz)
[代入] 文字列による代入.
bool IsValid(void) const
[確認] 有効確認.
CSystemTime & AddMonth(int iMonth)
[加算] 月加算
WORD GetMillSec(void) const
[取得] ミリ秒取得
CSystemTime & operator=(const FILETIME &ft)
[代入] 代入
CSystemTime & operator=(const SYSTEMTIME &st)
[代入] 代入
WORD GetMonth(void) const
[取得] 月取得
CSystemTime & AddMillSec(LONGLONG llMillSec)
[加算] ミリ秒加算
void Set(int iYear, int iMonth, int iDay)
[代入] 代入.
CSystemTime & AddSecond(LONGLONG iSecond)
[加算] 秒加算
CSystemTime & AddDay(int iDay)
[加算] 日加算
CSystemTime & AddYear(int iYear)
[加算] 年加算
CSystemTime & AddHour(int iHour)
[加算] 時加算
CSystemTime & operator=(const time_t &tm)
[代入] 代入
CStr ToTimeString(void) const
[作成] 文字列作成
static CSystemTime GetCurrentUtc(void)
[取得] 現在の時間(UTC)
WORD GetYear(void) const
[取得] 年取得
CSystemTime(const SYSTEMTIME &st)
代入コンストラクタ
WORD GetDay(void) const
[取得] 日取得
DWORD dwHighDateTime
high 32bits
DWORD dwLowDateTime
low 32bits