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