2012-12-31 25 views
3

的代碼是從這個頁面: https://github.com/reddit/reddit/blob/master/r2/r2/lib/db/_sorts.pyx有一行reddit的代碼(排名功能)讓我困惑

這裏是代碼片段:

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?

回答

7

你的假設是錯誤的,這就是爲什麼這個接縫很奇怪。 td.days包含自正確假定以來的紀元以來的天數,但td.secondstd.microseconds分別包含自一天開始以來的秒數和自第二秒開始以來的微秒數。因此,返回值將成爲自逗號後以秒爲單位的秒數。

2

td.days是整數天數,每天的任何部分被截斷。同樣,td.seconds是該「一天中的一小部分」內的秒數的整數,其中任何一小部分被截斷。所以你必須拼湊組件。