--- parser3/src/classes/date.C 2002/08/05 13:15:11 1.35 +++ parser3/src/classes/date.C 2002/08/08 14:35:30 1.36 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_DATE_C="$Date: 2002/08/05 13:15:11 $"; +static const char* IDENT_DATE_C="$Date: 2002/08/08 14:35:30 $"; #include "classes.h" #include "pa_request.h" @@ -229,6 +229,7 @@ static Table *fill_month_days(Request& r // calculating year week no [1..54] char *weekno_buf; size_t weekno_size; + int weekyear; // 0..6 week days-cells fill with month days for(int wday=0; wday<7; wday++, _day++) { String *cell=new(pool) String(pool); @@ -243,11 +244,13 @@ static Table *fill_month_days(Request& r tm tms={0,0,0, _day, month, year-1900}; /*normalize*/mktime(&tms); + weekyear=tms.tm_year+1900; + const int weekno_buf_size=2+1/*for stupid snprintfs*/ +1; // http://www.merlyn.demon.co.uk/weekinfo.htm const int FirstThurs[] = {7,5,4,3,2,7,6,5,4,2,1,7,6,4,3,2,1,6,5,4,3,1,7,6,5,3,2,1}; - int n=1 + (tms.tm_yday-(FirstThurs[(tms.tm_year+1900) % 28]-3))/7; + int n=1 + (tms.tm_yday-(FirstThurs[weekyear % 28]-3))/7; weekno_buf=(char *)pool.malloc(weekno_buf_size); weekno_size=snprintf(weekno_buf, weekno_buf_size, "%02d", n); } @@ -260,6 +263,14 @@ static Table *fill_month_days(Request& r method_name.origin().file, method_name.origin().line); row+=cell; } + // appending year week year + { + String *cell=new(pool) String(pool); + char *buf=(char *)pool.malloc(4+1); + cell->APPEND_CLEAN(buf, sprintf(buf, "%02d", weekyear), + method_name.origin().file, method_name.origin().line); + row+=cell; + } *result+=&row; }