unix时间戳:通过除法得不到正确的年份值

时间:2017-07-10 21:54:29

标签: date time timestamp

我试图从时间戳中提取年份,如下所示:

const int timestamp = 1499477613;
int hours = timestamp/3600;
int days = hours/24;
int years = days/356;
printf("years=%i\n", years);

然而,在执行程序后,我得到一个输出说:

  

年= 48

与预期值2017不同。

代码有什么问题?

1 个答案:

答案 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