--- parser3/src/classes/date.C 2003/11/20 15:35:29 1.53 +++ parser3/src/classes/date.C 2003/11/20 17:19:27 1.57 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_DATE_C="$Date: 2003/11/20 15:35:29 $"; +static const char * const IDENT_DATE_C="$Date: 2003/11/20 17:19:27 $"; #include "classes.h" #include "pa_vmethod_frame.h" @@ -91,7 +91,7 @@ static int NN_year_to_NNNN(int year) { const char* min=lsplit(&cur, ':'); const char* sec=cur; - tm tmIn={0}; + tm tmIn; memset(&tmIn, 0, sizeof(tmIn)); tmIn.tm_isdst=-1; if(!month) if(min) { @@ -138,7 +138,7 @@ static void _create(Request& r, MethodPa "invalid datetime"); } } else if(params.count()>=2) { // ^create(y;m;d[;h[;m[;s]]]) - tm tmIn={0}; + tm tmIn; memset(&tmIn, 0, sizeof(tmIn)); tmIn.tm_isdst=-1; tmIn.tm_year=NN_year_to_NNNN(params.as_int(0, "year must be int", r)); tmIn.tm_mon=params.as_int(1, "month must be int", r)-1; @@ -257,7 +257,12 @@ static Table& fill_month_days(Request& r int year=params.as_int(1, "year must be int", r); int month=max(1, min(params.as_int(2, "month must be int", r), 12)) -1; - tm tmIn={0, 0, 0, 1, month, year-1900}; + tm tmIn; + memset(&tmIn, 0, sizeof(tmIn)); + tmIn.tm_mday=1; + tmIn.tm_mon=month; + tmIn.tm_yday=year-1900; + time_t t=mktime(&tmIn); if(t<0) throw Exception(0, @@ -286,7 +291,12 @@ static Table& fill_month_days(Request& r *row+=cell; if(wday==(rus?3:4)/*thursday*/) { - tm tms={0,0,0, _day, month, year-1900}; + tm tms; + memset(&tms, 0, sizeof(tmIn)); + tms.tm_mday=_day; + tms.tm_mon=month; + tms.tm_yday=year-1900; + /*normalize*/mktime(&tms); weekyear=tms.tm_year+1900; @@ -326,7 +336,13 @@ static Table& fill_week_days(Request& r, int month=max(1, min(params.as_int(2, "month must be int", r), 12)) -1; int day=params.as_int(3, "day must be int", r); - tm tmIn={0, 0, 18, day, month, year-1900}; + tm tmIn; + memset(&tmIn, 0, sizeof(tmIn)); + tmIn.tm_hour=18; + tmIn.tm_mday=day; + tmIn.tm_mon=month; + tmIn.tm_yday=year-1900; + time_t t=mktime(&tmIn); if(t<0) throw Exception(0,