提示符是:
实施确定并打印当前年,月和日的功能。
例如:
今天是03/04/2014。
你们真的不介意我写的代码,它只是有点像涂鸦试图找到一种方法来打印当前日期使用秒自从由 time(NULL)命令。
在任何人给我一个超级复杂的时间命令代码等之前,我很确定我的教授希望我们将unix时间(自纪元以来的秒数:1970年1月1日)转换为当前日期。
任何人都能以我教授想要的方式帮助我吗?
谢谢!
我目前的代码是:
#include <stdio.h>
#include <time.h>
int main ()
{
int days, weeks, months, years, option, rmd, currentyear, currentmonth;
time_t seconds;
seconds = time(NULL);
days = seconds/(60*60*24);
weeks = seconds/((60*60*24)*7);
rmd=seconds%31557600;
months = ((seconds/31557600) * 12)+(((float)rmd/31557600)*12);
years = days/(365.25);
currentyear = 1970 + years;
currentmonth = (((float)rmd/31557600)*12)+1;
printf("%ld/%ld", currentmonth,currentyear);
;
return 0;
}
答案 0 :(得分:1)
处理日期,天真的方式是自杀*,使用localtime
功能。它仍然会出错(日期是horrible hideous mess,但是不能完全正确),但至少“nornal”的东西已经被处理掉了,无论如何这都是别人的错。
*您的代码未处理闰年,因此您的结果完全错误。因此,您添加代码以检查多年(如果为4)。但是1900年之前的日期是错误的,因为世纪边界是一个例外(它们不是闰年)。然后2000年之后的日期都是错误的,因为例外有一个例外,无论如何可以被400整除的年数是闰年。我们还没有开始讨论时区,DST和闰秒。
答案 1 :(得分:1)
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t now = time(0);
struct tm *t = localtime(&now);
printf("%.4d-%.2d-%.2d\n", t->tm_year + 1900, t->tm_mon + 1, t->tm_mday);
return 0;
}