- 论坛徽章:
- 0
|
看看这个关于时间幼稚问题!急!在线等!
原理:利用时间函数,求得本月(要计算的月)第一天与下一月第一天的差,即本月有多少天。
- #include <stdio.h>;
- #include <stdlib.h>;
- #include <errno.h>;
- #include <malloc.h>;
- #include <time.h>;
- long ToLongTime( year, mon, day )
- int year, mon, day;
- {
- struct tm stcTime;
- long tTimes;
-
- stcTime.tm_year = year - 1900;
- stcTime.tm_mon = mon - 1;
- stcTime.tm_mday = day;
- stcTime.tm_hour = 0;
- stcTime.tm_min = 0;
- stcTime.tm_sec = 0;
- tTimes = mktime( &stcTime);
-
- return tTimes;
- }
- void main(argc, argv)
- int argc;
- char *argv[];
- {
- int year, mon;
- long first, second, day_diff;
- if (argc != 3)
- {
- printf("Usage: %s YEAR MONTH\n", argv[0]);
- exit(0);
- }
-
- year = atoi(argv[1]);
- mon = atoi(argv[2]);
-
- if( year < 1900 )
- {
- printf("YEAR 必须大于1900 \n ");
- exit(0);
- }
- if(( mon < 1 ) || ( mon >; 12 ))
- {
- printf("MONTH 必须介于1—12 \n ");
- exit(0);
- }
- first = ToLongTime(year, mon, 1);
- second = ToLongTime(year + (mon == 12 ? 1 : 0 ), (( mon + 1 ) % 12), 1);
-
- day_diff = difftime(second, first);
-
- printf("%d days in Year %s Mon %s .\n", day_diff/60/60/24, argv[1], argv[2]);
- }
复制代码
hp-ux11 ANSIC C测试通过。 |
|