/* * TIMEDATE.H * * Header file for ArchiveLib 1.0 * * Copyright (c) 1994 Greenleaf Software, Inc. * All Rights Reserved * * DESCRIPTION * * This header file contains the class declaration for ALTimeDate. * * CLASS DEFINITIONS: * * ALTimeDate * * REVISION HISTORY * * May 26, 1994 1.0A : First release * */ #ifndef _TIMEDATE_H #define _TIMEDATE_H #include /* * class ALOpenInputFile * * DESCRIPTION * * class ALTimeDate is used strictly to keep track of the time/date * stamp of an ALStorage object. The only place this class appears is * as the mTimeDate member of ALStorage. It has a number of conversion * utilities for loading and exporting its values in various formats. * Since most of the ways we have to set time stamps for objects * are not ANSI standard, we end up with quite a few conversion utilities. * * DATA MEMBERS * * miYear : The year just like you would expect, e.g 1994. A value of * 0 in this field indicates an invalid time. * * miMonth : The month, 1-12. * * miDate : The date, 1-31. * * miHour : In 2400 format, 0 - 23. * * miMinute : 0 - 59 * * miSecond : 0 -59, * * MEMBER FUNCTIONS * * ALTimeDate() : The constructor, sets all members to 0. * ~ALTimeDate() : The destructor, has no work to do. * operator new() : The memory allocation operator, only used * when the library is inside a DLL. * ToJulian() : Convert the internal m/d/y members to * a julian day number. * FromJulian() : Convert a julian day number to internal * data members m/d/y. * GetUnixTime() : Convert all members to a long in unix format, * total seconds since 1/1/1970. * GetDosTime() : Convert h:m:s data members to the unsigned int * used in certain DOS commands. * GetDosDate() : Convert m/d/y data members to the unsigned int * used in certain DOS commands. * SetTimeDate(long) : Set internal data members from a UNIX long. * SetTimeDate(struct tm*) : Set internal data members from a DOS * struct tm *. * GetTimeDate() : Convert internal data members to a DOS struct tm *. * Valid() : Indicate if a valid time has been set. * * REVISION HISTORY * * May 26, 1994 1.0A : First release * */ class AL_CLASS_TYPE ALTimeDate { /* * Constructors, destructors, declarations, assignment operator */ public : AL_PROTO ALTimeDate(); AL_PROTO ~ALTimeDate(); #if defined( AL_USING_DLL ) || defined( AL_BUILDING_DLL ) void AL_DLL_FAR * AL_PROTO operator new( size_t size ); #endif /* * I usually hide the copy constructor and assignment operators, * but in this case they are OK * * * Member functions */ public : long AL_PROTO ToJulian(); void AL_PROTO FromJulian( long jdn ); long AL_PROTO GetUnixTime(); #if !defined( AL_WIN32S ) unsigned short int AL_PROTO GetDosTime(); unsigned short int AL_PROTO GetDosDate(); #endif /* #if !defined( AL_WIN32S ) */ void AL_PROTO SetTimeDate( long unix_time ); void AL_PROTO SetTimeDate( struct tm AL_DLL_FAR *tblock ); void AL_PROTO GetTimeDate( struct tm AL_DLL_FAR *tblock ); int AL_PROTO Valid(){ return miYear != 0; } /* * Data members */ protected : short int miYear; /* What you expect, e.g. 1995 */ short int miMonth; /* 1-12 */ short int miDate; /* 1-31 */ short int miHour; /* 0-23 */ short int miMinute; /* 0-59 */ short int miSecond; /* 0-59 */ }; #endif