Google在GoogleCalendar HTML中每天都使用唯一的DateKeys,例如
<div
data-datekey="129"
role="gridcell"
tabindex="-1"
jsname="RjPD4e"
aria-labelledby="tsc-0"
data-column-index="0"
data-principal-ids="amFuLm5pY2tsYXNAbmFtaWNzLmNvbQ"
class="YvjgZe Qbfsob">
是否有任何公式可以计算给定日期键的日期?
[看起来他们的工程师用2^9
(512
)位存储了一年:
[1.1.1970
(日期键:33
)和1.1.1971
(日期键:545
)=512
1.1.1972
(日期密钥:1569
)和1.1.1972
(日期密钥:2081
)= 512
[2^5
(32
)位用于存储一个月。
因此,模运算可能如下所示:
function getDate(dateKey) {
const yearOffset = (dateKey - 32) % 512;
const year = (dateKey - 32 - yearOffset) / 512;
const day = yearOffset % 32;
const month = (yearOffset - day) / 32;
return new Date(year + 1970, month, day);
}
有人知道为什么要提出这样的逻辑吗?