有一行Reddit的代码(排名功能)让我感到困惑

时间:2012-12-31 14:34:58

标签: python reddit

代码来自此页面: https://github.com/reddit/reddit/blob/master/r2/r2/lib/db/_sorts.pyx

以下是代码段:

cpdef double epoch_seconds(date):
"""Returns the number of seconds from the epoch to date. Should
   match the number returned by the equivalent function in
   postgres."""
td = date - epoch
return td.days * 86400 + td.seconds + (float(td.microseconds) / 1000000)

我认为td.days * 86400应该等于td.seconds以及(float(td.microseconds) / 1000000),我想知道他们为什么不简单地将td.seconds乘以3?

2 个答案:

答案 0 :(得分:7)

你的假设是错误的,这就是为什么这种接缝很奇怪。 td.days包含您正确假设的纪元以来的天数,但td.secondstd.microseconds包含自当天开始以来的秒数以及自开始以来的微秒数分别是第二个。因此,返回值变为自纪元以来的秒数,以微秒为逗号后的部分。

答案 1 :(得分:2)

td.days是整数天数,截止日期为任意一小部分。同样地,td.seconds是“一天中的一小部分”内的整数秒数,其中任何一小部分都被截断。所以你必须拼凑组件。