【发布时间】:2013-06-27 12:14:22
【问题描述】:
我正在尝试编写 C++ 代码来计算自 1970 年 1 月 1 日以来的年数、月数、周数、小时数和分钟数。我包括我目前拥有的代码。请帮我。提前致谢。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
double seconds, minutes, days, weeks, months, years, hours;
seconds = time(NULL);
minutes = seconds / 60;
hours = minutes / 60;
days = hours / 24;
weeks = days / 7;
months = weeks / 4;
years = days / 365;
months = (int) (days / 30.42) % 12;
weeks = (int) (days / 7) % 52;
days = (int) (hours / 24) % 24;
hours = (int) (minutes / 60) % 1;
minutes = (int) (seconds / 60) % 60;
printf("%d years \n", (int)years);
printf(" %d months \n", (int)months);
printf(" %d weeks\n", (int)weeks);
printf(" %d days \n", (int)days);
printf(" %d minutes\n", (int)minutes);
printf(" %d hours\n\n", (int)hours);
system("pause");
}
【问题讨论】:
-
为什么不使用
localtime?它会将time_t转换为struct tm,这正是您所需要的。 -
无闰年逻辑。需要解释魔术常数30.42
-
感谢您的回复。不需要闰年逻辑。我认为 30.42 常数是为了弥补闰年。不确定,因为我是新手。我在让系统准确地计算出 time(null) 是一个有凝聚力的时间值单位时遇到了问题。我希望我可以使用当地时间,但我必须使用上面指定的功能。谢谢你们让他们来:)
-
您有 2 周的计算:您是在寻找一个月中的一周还是一年中的一周,还是两者兼而有之?
标签: c++ c visual-studio time date-arithmetic