|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
计算年的时候得不到正确结果,请问哪里出错?
- #include <stdio.h>
- #include <time.h>
- void calculate(time_t time_s,int *day,int *year)
- {
- *day = time_s / (24 * 60 * 60);
- switch( time_s % ((3 * 365 * 86400) + 366 * 86400) )
- {
- case 0:*year = 4 * (time_s / (3 * 365 * 86400 + 366 * 86400)) + 1970;break;
- case 1:*year = 4 * (time_s / (3 * 365 * 86400 + 366 * 86400)) + 1971;break;
- case 2:*year = 4 * (time_s / (3 * 365 * 86400 + 366 * 86400)) + 1972;break;
- case 3:*year = 4 * (time_s / (3 * 365 * 86400 + 366 * 86400)) + 1973;break;
- }
- }
- int main()
- {
- time_t now = time(NULL);
- int time_d;
- int time_y;
- calculate(now,&time_d,&time_y);
-
- printf("senconds:%lli\n",now);
- printf("day:%i\n",time_d);
- printf("year:%i\n",time_y);
- return 0;
- }
复制代码
这段代码中存在一些问题导致无法正确计算年份。首先,计算年份的方法不够精确,其次,在计算年份时使用了错误的公式。以下是修复后的代码示例:
- #include <stdio.h>
- #include <time.h>
- void calculate(time_t time_s, int *day, int *year)
- {
- struct tm *timeinfo = localtime(&time_s);
- *day = timeinfo->tm_yday;
- *year = timeinfo->tm_year + 1900;
- }
- int main()
- {
- time_t now = time(NULL);
- int time_d;
- int time_y;
- calculate(now, &time_d, &time_y);
- printf("seconds: %lli\n", now);
- printf("day: %i\n", time_d);
- printf("year: %i\n", time_y);
- return 0;
- }
复制代码
在修复后的代码中,我们使用了`localtime`函数来获取时间信息,然后从中提取了天数和年份。这样可以更精确地计算年份,并且避免了之前代码中的错误。希望这能帮到你!
求最佳答案
|
|