int getWeekNumber(int y, int m, int d) {
  int julian = getDayOfYear(y,m,d);
  // since this is only for display purposes, we can mix settings here:
  if(getSetting(SETTING_WEEK_START_DAY)==1) {
    if(julian>1) julian--;
    else { y--; julian = getDayOfYear(y,m,d); }
  }
  int dowk = dow(y,m,d);
  int dowkJan1 = dow(y,1,1);
  int weekNum = ((julian + 6) / 7);
  if (dowk < dowkJan1)
      weekNum++;
  return weekNum;
}
Example #2
0
int main()
{
    int y, m, d;
    int i;
    const int Y = 2014, M = 1, D = 31, Mmax = 12, Dmax = 31;
    while(1)
    {
        int sum = 0;
        scanf("%d-%d-%d", &y, &m, &d);

        if(Y - y == 0)	//同年
        {
            if(m >= M)	//2014-1-31 到 y-m-d
            {
                printf("%d\n", getDayOfYear(y, m, d) - getDayOfYear(2014, 1, 31));

            }
            else		//y-m-d 到 2014-1-31
            {
                printf("%d\n", getDayOfYear(y, m, d) - getDayOfYear(2014, 1, 31));

            }
        }
        else	//不同年
        {
            if(y > Y)   //2014-1-31 到 y-m-d
            {
                sum = getDayOfYear(2014, 12, 31) - getDayOfYear(2014, 1, 31); //2014-1-31 到 2014-12-31
                for(i = 2014 + 1; i < y; ++i)								  //2015-1-1 到 y-1 -12-31
                {
                    sum += getDayOfYear(i, 12, 31);
                }
                sum += getDayOfYear(y, m, d);								  //y -1 -1 到 y -m -d
                printf("%d\n", sum);
            }
            else		//y-m-d 到 2014-1-31
            {
                sum = getDayOfYear(y, 12, 31) - getDayOfYear(y, m, d);		  //y -m -d 到 y -12 -31
                for(i = y+1; i < 2014; ++i)
                {
                    sum += getDayOfYear(i, 12, 31);							  //y+1 -1 -1 到 2014-12-31
                }
                sum += getDayOfYear(2014, 1, 31);							  //2014-1-1 到 2014-1-31
                printf("%d\n", sum);
            }

        }
        printf("Try again:\n");
    }
}