windows-nt/Source/XPSP1/NT/base/fs/utils/ulib/inc/timeinfo.hxx

646 lines
6.9 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
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_