int week[] = {4,5,6,7,1,2,3}; // 1970年1月1日 一周的星期排序
// 获取本年周数号
static int iYearWeek(int iYear, int iYDay)
{
int i;
int iNYear, iNYDay; // struct tm *t; t->tm_year + 1900; t->tm_yday + 1;
int iYearSum = 0; // 距1970年多少天
int iDay, iWeekDay, iWeeks, iRetWeek;
iNYear = iYear + 1900;
iNYDay = iYDay + 1;
for (i = 1970; i < iNYear; i++) {
if (i % 4 == 0 && i % 100 != 0 || i % 400 == 0) {
iYearSum += 366;
}
else{
iYearSum += 365;
}
}
// 本年度一月一号距70年的天数取余
iDay = iYearSum % 7;
iWeekDay = week[iDay];
iWeeks = iNYDay / 7;
if (iNYDay <= 7 - iWeekDay) {
iRetWeek = iWeeks + 1;
} else if (iNYDay == 7) {
iRetWeek = iWeeks;
} else if ((iNYDay - 7 + iWeekDay) % 7 == 0) {
iRetWeek = (iNYDay - 7 + iWeekDay) / 7 + 1;
} else if (iWeekDay == 7 && (iNYDay - 7 + iWeekDay) % 7 != 0) {
iRetWeek = (iNYDay - 7 + iWeekDay) / 7 + 1;
} else {
iRetWeek = (iNYDay - 7 + iWeekDay) / 7 + 2;
}
return iRetWeek;
}