646 lines
6.9 KiB
C++
646 lines
6.9 KiB
C++
/*++
|
||
|
||
Copyright (c) 1991 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
time.hxx
|
||
|
||
Abstract:
|
||
|
||
This module contains the declaration for the TIMEINFO class.
|
||
The data members of the TIMEINFO class contain the date and
|
||
time information represented as a FILETIME structure and a
|
||
SYSTEMTIME structure. These two representations of date and
|
||
time are always initialized independently of the way that the
|
||
TIMEINFO class is initialized (as a FILETIME or a SYSTEMTIME).
|
||
|
||
Author:
|
||
|
||
Jaime Sasson (jaimes) 13-Mar-1991
|
||
|
||
Environment:
|
||
|
||
ULIB, User Mode
|
||
|
||
|
||
--*/
|
||
|
||
|
||
#if !defined( _TIMEINFO_ )
|
||
|
||
#define _TIMEINFO_
|
||
|
||
#include "wstring.hxx"
|
||
|
||
|
||
DECLARE_CLASS( TIMEINFO );
|
||
|
||
|
||
class TIMEINFO : public OBJECT {
|
||
|
||
public:
|
||
|
||
ULIB_EXPORT
|
||
DECLARE_CONSTRUCTOR( TIMEINFO );
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
Initialize(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
Initialize(
|
||
IN PFILETIME FileTime
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
Initialize(
|
||
IN PSYSTEMTIME SystemTime
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
VOID
|
||
Initialize(
|
||
IN PCTIMEINFO TimeInfo
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
Initialize(
|
||
IN USHORT Year,
|
||
IN USHORT Month,
|
||
IN USHORT Day,
|
||
IN USHORT Hour,
|
||
IN USHORT Minute,
|
||
IN USHORT Second,
|
||
IN USHORT Milliseconds
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
SHORT
|
||
CompareTimeInfo(
|
||
IN PFILETIME FileTime
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
SHORT
|
||
CompareTimeInfo(
|
||
IN PSYSTEMTIME SystemTime
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
PFILETIME
|
||
GetFileTime(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
PSYSTEMTIME
|
||
GetSysTime(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
IsLeapYear(
|
||
USHORT Year DEFAULT 0
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryYear(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryMonth(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryDay(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryDayOfWeek(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryHour(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryMinute(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QuerySecond(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryMilliseconds(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryDayOffset(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryDaysInMonth(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
USHORT
|
||
QueryDaysInYear(
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetDate(
|
||
USHORT Year,
|
||
USHORT Month,
|
||
USHORT Day
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetDate(
|
||
PCWSTRING Date
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetDateAndTime (
|
||
PCWSTRING DateAndTime
|
||
);
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetTime(
|
||
USHORT Hour DEFAULT 0,
|
||
USHORT Minute DEFAULT 0,
|
||
USHORT Second DEFAULT 0,
|
||
USHORT Millisecond DEFAULT 0
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
SetTime(
|
||
PCWSTRING Time
|
||
);
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
QueryTime(
|
||
OUT PWSTRING FormattedTimeString
|
||
) CONST;
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
QueryDate(
|
||
OUT PWSTRING FormattedDateString
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
ConvertToUTC(
|
||
);
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
ConvertToLocal(
|
||
);
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
operator== (
|
||
IN TIMEINFO TimeInfo
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
operator!= (
|
||
IN TIMEINFO TimeInfo
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
operator< (
|
||
IN TIMEINFO TimeInfo
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
ULIB_EXPORT
|
||
BOOLEAN
|
||
operator> (
|
||
IN TIMEINFO TimeInfo
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
operator<= (
|
||
IN TIMEINFO TimeInfo
|
||
) CONST;
|
||
|
||
|
||
NONVIRTUAL
|
||
BOOLEAN
|
||
operator>= (
|
||
IN TIMEINFO TimeInfo
|
||
) CONST;
|
||
|
||
|
||
private:
|
||
|
||
VOID
|
||
Construct (
|
||
);
|
||
|
||
FILETIME _FileTime;
|
||
SYSTEMTIME _SystemTime;
|
||
|
||
};
|
||
|
||
|
||
|
||
INLINE
|
||
BOOLEAN
|
||
TIMEINFO::IsLeapYear(
|
||
USHORT Year
|
||
) CONST
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
This member function finds out if the year received as parameter
|
||
is a leap year.
|
||
|
||
Arguments:
|
||
|
||
Year - Year to be verified. If the year specified is zero, then
|
||
the year stored in this class is verified.
|
||
|
||
Return Value:
|
||
|
||
BOOLEAN - Indicates if it is a leap year (TRUE) or not (FALSE).
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
Year = ( Year == 0 )? (USHORT)_SystemTime.wYear : Year;
|
||
if( ( ( Year % 400 ) == 0 ) ||
|
||
( ( Year % 100 ) != 0 ) && ( ( Year % 4 ) == 0 ) ) {
|
||
return( TRUE );
|
||
}
|
||
else {
|
||
return( FALSE );
|
||
}
|
||
}
|
||
|
||
|
||
|
||
INLINE
|
||
USHORT
|
||
TIMEINFO::QueryYear(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns the year stored in the data member of this class.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
USHORT - Number representing the year.
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return( _SystemTime.wYear );
|
||
}
|
||
|
||
|
||
|
||
|
||
INLINE
|
||
USHORT
|
||
TIMEINFO::QueryMonth(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns the month stored in the data member of this class.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
USHORT - Number representing the month.
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return( _SystemTime.wMonth );
|
||
}
|
||
|
||
|
||
|
||
|
||
INLINE
|
||
USHORT
|
||
TIMEINFO::QueryDay(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns the day stored in the data member of this class.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
USHORT - Number representing the day.
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return( _SystemTime.wDay );
|
||
}
|
||
|
||
|
||
|
||
|
||
INLINE
|
||
USHORT
|
||
TIMEINFO::QueryDayOfWeek(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns the day of the week stored in the data member of this class.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
USHORT - Number representing the day of the week.
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return( _SystemTime.wDayOfWeek );
|
||
}
|
||
|
||
|
||
|
||
|
||
INLINE
|
||
USHORT
|
||
TIMEINFO::QueryHour(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns the hour stored in the data member of this class.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
USHORT - Number representing the hour.
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return( _SystemTime.wHour );
|
||
}
|
||
|
||
|
||
|
||
|
||
INLINE
|
||
USHORT
|
||
TIMEINFO::QueryMinute(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns the minutes stored in the data member of this class.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
USHORT - Number representing the minutes.
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return( _SystemTime.wMinute );
|
||
}
|
||
|
||
|
||
|
||
|
||
INLINE
|
||
USHORT
|
||
TIMEINFO::QuerySecond(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns the seconds stored in the data member of this class.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
USHORT - Number representing the secondss.
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return( _SystemTime.wSecond );
|
||
}
|
||
|
||
|
||
|
||
|
||
INLINE
|
||
USHORT
|
||
TIMEINFO::QueryMilliseconds(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns the number of milliseconds stored in the data member of
|
||
this class.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
USHORT - Number representing the millisecondss.
|
||
|
||
|
||
--*/
|
||
|
||
{
|
||
return( _SystemTime.wMilliseconds );
|
||
}
|
||
|
||
|
||
|
||
INLINE
|
||
PFILETIME
|
||
TIMEINFO::GetFileTime(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns a pointer to the data member that contains the file time.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
PFILETIME - Pointer to FileTime.
|
||
|
||
--*/
|
||
|
||
{
|
||
return( ( PFILETIME )&_FileTime );
|
||
}
|
||
|
||
|
||
|
||
INLINE
|
||
PSYSTEMTIME
|
||
TIMEINFO::GetSysTime(
|
||
) CONST
|
||
|
||
|
||
/*++
|
||
|
||
Routine Description:
|
||
|
||
Returns a pointer to the data member that contains the system time.
|
||
|
||
Arguments:
|
||
|
||
None.
|
||
|
||
Return Value:
|
||
|
||
PSYSTEMTIME - Pointer to SystemTime.
|
||
|
||
--*/
|
||
|
||
{
|
||
return( ( PSYSTEMTIME )&_SystemTime );
|
||
}
|
||
|
||
|
||
|
||
#endif // _TIMEINFO_
|