mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
6.5 KiB
192 lines
6.5 KiB
/**********************************************************************/
|
|
/** Microsoft Windows/NT **/
|
|
/** Copyright(c) Microsoft Corp., 1991 **/
|
|
/**********************************************************************/
|
|
|
|
/*
|
|
ctime.hxx
|
|
Header file for TIME class
|
|
|
|
FILE HISTORY:
|
|
terryk 27-Aug-91 Created
|
|
terryk 13-Sep-91 Code review changes. Attend: davidbul
|
|
o-simop beng
|
|
terryk 14-Oct-91 Add comment. It will not work for date
|
|
before 1980.
|
|
terryk 30-Nov-91 Change _ptmTime to _tmTime ( for
|
|
multiple copy of the object )
|
|
Yi-HsinS 5-Dec-92 Restructure to use WIN32 APIs instead
|
|
of C Runtimes
|
|
|
|
*/
|
|
|
|
#ifndef _CTIME_HXX_
|
|
#define _CTIME_HXX_
|
|
|
|
#include "base.hxx"
|
|
|
|
/*************************************************************************
|
|
|
|
NAME: WIN_TIME
|
|
|
|
SYNOPSIS: Wrapper class for WIN32 TIME functions
|
|
|
|
INTERFACE:
|
|
WIN_TIME() - construct and set the object to current time or
|
|
a specified time.
|
|
ALWAYS PASS THE GMT TIME, even if fStoreAsGMT is FALSE.
|
|
SetCurrentTime() - set the object to current time. ONLY CALL THIS
|
|
WHEN _fStoreAsGMT IS TRUE!
|
|
SetTime() - set the object to a specified time. The
|
|
time value represents the seconds elapsed since
|
|
00:00:00 January 1,1970. However it will not
|
|
work for date prior to January 1980.
|
|
ALWAYS PASS THE GMT TIME, even if _fStoreAsGMT is FALSE.
|
|
SetGMT() - set the present method to local time or GMT time
|
|
|
|
These methods set a component of the time:
|
|
|
|
SetHour() - set the hour field ( 0-23 )
|
|
SetMinute() - set the minute field ( 0-59 )
|
|
SetSecond() - set the second field ( 0-59 )
|
|
SetMilliseconds() - set the millisecond field ( 0-999 )
|
|
SetYear() - set the year field ( e.g. 1992 )
|
|
SetMonth() - set the month field ( 1-12, 1-January )
|
|
SetDay() - set day of month field ( 1-31 )
|
|
|
|
Normalize() - set the DayofWeek and year day
|
|
appropriately. Always call this after you are
|
|
finished calling the Set[component] methods
|
|
and before you use the WIN_TIME in any other way.
|
|
|
|
|
|
QueryTime() - return the time in ULONG format ( the
|
|
second elapsed since 00:00:00, January 1, 1970.)
|
|
Always returns GMT time regardless of _fStoreAsGMT.
|
|
QueryFileTime() - return the GMT time in FILETIME format
|
|
Always returns GMT time regardless of _fStoreAsGMT.
|
|
QueryLocalTime() - return the time in ULONG format ( the
|
|
second elapsed since 00:00:00, January 1, 1970.)
|
|
Always returns local time regardless of _fStoreAsGMT.
|
|
QueryLocalTime() - return the GMT time in FILETIME format
|
|
Always returns local time regardless of _fStoreAsGMT.
|
|
|
|
These APIs return a component of the time:
|
|
|
|
QueryHour() - return hour field value ( 0-23 )
|
|
QueryMinute() - return minute field value ( 0-59 )
|
|
QuerySecond() - return second field value ( 0-59 )
|
|
QueryMilliseconds() - return the millisecond field value ( 0-999)
|
|
QueryYear() - return year field value ( e.g. 1992 )
|
|
QueryMonth() - return month field value ( 1-12, 1-January )
|
|
QueryDay() - return Day field value ( 1- 31 )
|
|
QueryDayOfWeek() - return day of week field value
|
|
( 0 - 6, Sunday = 0 )
|
|
|
|
NOTES: WIN_TIME stores time internally in either local time
|
|
or GMT time, depending on the setting of the _fStoreAsGMT flag.
|
|
|
|
HISTORY:
|
|
terryk 27-Aug-91 Created
|
|
Yi-HsinS 5-Dec-92 Inherit from BASE
|
|
JonN 15-Apr-1992 GMT improvements
|
|
|
|
**************************************************************************/
|
|
|
|
DLL_CLASS WIN_TIME : public BASE
|
|
{
|
|
private:
|
|
BOOL _fStoreAsGMT;
|
|
FILETIME _fileTime;
|
|
SYSTEMTIME _sysTime;
|
|
|
|
public:
|
|
WIN_TIME( BOOL fStoreAsGMT = FALSE );
|
|
WIN_TIME( ULONG tTimeGMT, BOOL fStoreAsGMT = FALSE );
|
|
WIN_TIME( FILETIME fileTimeGMT, BOOL fStoreAsGMT = FALSE );
|
|
|
|
//
|
|
// Set time methods
|
|
//
|
|
APIERR SetCurrentTime();
|
|
APIERR SetCurrentTimeGMT()
|
|
{ return SetCurrentTime(); }
|
|
APIERR SetTime( ULONG tTimeGMT );
|
|
APIERR SetTime( FILETIME fileTimeGMT );
|
|
APIERR SetTimeGMT( ULONG tTimeGMT )
|
|
{ return SetTime( tTimeGMT ); }
|
|
APIERR SetTimeGMT( FILETIME fileTimeGMT )
|
|
{ return SetTime( fileTimeGMT ); }
|
|
APIERR SetTimeLocal( ULONG tTimeLocal );
|
|
APIERR SetTimeLocal( FILETIME fileTimeLocal );
|
|
|
|
APIERR SetGMT ( BOOL fStoreAsGMT );
|
|
|
|
//
|
|
// Query time methods
|
|
//
|
|
APIERR QueryTime( ULONG *ptTimeGMT ) const;
|
|
APIERR QueryFileTime( FILETIME *pfileTimeGMT ) const;
|
|
APIERR QueryTimeGMT( ULONG *ptTimeGMT ) const
|
|
{ return QueryTime( ptTimeGMT ); }
|
|
APIERR QueryFileTimeGMT( FILETIME *pfileTimeGMT ) const
|
|
{ return QueryFileTime( pfileTimeGMT ); }
|
|
APIERR QueryTimeLocal( ULONG *ptTimeLocal ) const;
|
|
APIERR QueryFileTimeLocal( FILETIME *pfileTimeLocal ) const;
|
|
|
|
//
|
|
// Set individual field methods
|
|
//
|
|
VOID SetHour( INT nHour )
|
|
{ _sysTime.wHour = (WORD)nHour; }
|
|
|
|
VOID SetMinute( INT nMinute )
|
|
{ _sysTime.wMinute = (WORD)nMinute; }
|
|
|
|
VOID SetSecond( INT nSecond )
|
|
{ _sysTime.wSecond = (WORD)nSecond; }
|
|
|
|
VOID SetMilliseconds( INT nMilliseconds )
|
|
{ _sysTime.wMilliseconds = (WORD)nMilliseconds; }
|
|
|
|
VOID SetYear( INT nYear )
|
|
{ _sysTime.wYear = (WORD)nYear; }
|
|
|
|
VOID SetMonth( INT nMonth )
|
|
{ _sysTime.wMonth = (WORD)nMonth; }
|
|
|
|
VOID SetDay( INT nDay )
|
|
{ _sysTime.wDay = (WORD)nDay; }
|
|
|
|
APIERR Normalize();
|
|
|
|
//
|
|
// Query individual field methods
|
|
//
|
|
INT QueryHour() const
|
|
{ return _sysTime.wHour; }
|
|
|
|
INT QueryMinute() const
|
|
{ return _sysTime.wMinute; }
|
|
|
|
INT QuerySecond() const
|
|
{ return _sysTime.wSecond; }
|
|
|
|
INT QueryMilliseconds() const
|
|
{ return _sysTime.wMilliseconds; }
|
|
|
|
INT QueryYear() const
|
|
{ return _sysTime.wYear; }
|
|
|
|
INT QueryMonth() const
|
|
{ return _sysTime.wMonth; }
|
|
|
|
INT QueryDay() const
|
|
{ return _sysTime.wDay; }
|
|
|
|
INT QueryDayOfWeek() const
|
|
{ return _sysTime.wDayOfWeek; }
|
|
|
|
};
|
|
|
|
#endif // _CTIME_HXX_
|