windows-nt/Source/XPSP1/NT/admin/netui/common/h/ctime.hxx
2020-09-26 16:20:57 +08:00

193 lines
6.5 KiB
C++

/**********************************************************************/
/** 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_