Leaked source code of windows server 2003
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.
|
|
/**********************************************************************/ /** 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_
|