只需使用mktime
:
tm date = {};
date.tm_year = year - 1900;
date.tm_mon = month - 1;
date.tm_mday = day;
mktime( &date );
dayNumber = date.tm_yday;
否则,您将需要一个二维表:
int daysToMonth[2][12] =
{
{ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334 },
{ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335 },
};
和一个函数:
bool isLeapYear( int year )
{
return year % 4 == 0 && (year % 100 != 0 || year % 400 == 0);
}
那么一年中的某一天是:
daysToMonth[isLeapYear( year ) ? 1 : 0][month] + day;