Gernot Frisch wrote:
bool isOlderThanToday(const char* pDate)
{
// How to do this?
}
void main()
{
const char* pDate = "29-Feb-2005";
if (isOlderThanToday(pDate))
printf ("older!");
}
eg.
(C solution, error handling ommitted)
#include <stdio.h>
#include <time.h>
#include <string.h>
int TextToNum( const char* Month )
{
char* AllMonth[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
"Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
for( int i = 0; i < 12; ++i )
if( strcmp( Month, AllMonth[i] ) == 0 )
return i;
return -1;
}
time_t ParseDate( const char* pDate )
{
char MonthAsString[4];
int Day;
int Year;
time_t Date;
tm NewDate;
sscanf( pDate, "%d-%3c-%d", &Day, MonthAsString, &Year );
MonthAsString[3] = '\0';
printf( "%d : %s : %d\n", Day, MonthAsString, Year );
memset( &NewDate, 0, sizeof( NewDate ) );
NewDate.tm_mday = Day;
NewDate.tm_mon = TextToNum( MonthAsString );
NewDate.tm_year = Year - 1900;
Date = mktime( &NewDate );
return Date;
}
bool isOlderThanToday( const char* pDate )
{
time_t today;
time( &today );
time_t Date = ParseDate( pDate );
return difftime( Date, today ) < 0.0;
}
int main()
{
const char* pDate = "27-Feb-2005";
if( isOlderThanToday( pDate ) )
printf( "older!\n" );
else
printf( "In the future\n" );
return 0;
}
--
Karl Heinz Buchegger
kb******@gascad.at