我试图从时间戳中提取年份,如下所示:
const int timestamp = 1499477613;
int hours = timestamp/3600;
int days = hours/24;
int years = days/356;
printf("years=%i\n", years);
然而,在执行程序后,我得到一个输出说:
年= 48
与预期值2017
不同。
代码有什么问题?
答案 0 :(得分:1)
https://en.wikipedia.org/wiki/Unix_time
Unix时间(也称为POSIX时间或纪元时间)是一个系统 描述时间瞬间,定义为秒数 已经过了00:00:00协调世界时(UTC), 1970年1月1日星期四。
该结果告诉您(大约)自那时起已过去48年。 1970 + 48 = 2018
。
您没有获得准确值的原因是您在每次计算中都会丢失精确度。您正在使用整数来编码可能返回浮点的内容。 (而我认为这是一个错字:days/356
应该是days/365
)