GoogleCalendar Datekey

问题描述 投票:0回答:1

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">

是否有任何公式可以计算给定日期键的日期?

javascript html google-calendar-api
1个回答
0
投票

[看起来他们的工程师用2^9512)位存储了一年:

[1.1.1970(日期键:33)和1.1.1971(日期键:545)=5121.1.1972(日期密钥:1569)和1.1.1972(日期密钥:2081)= 512

[2^532)位用于存储一个月。

因此,模运算可能如下所示:

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);
}

有人知道为什么要提出这样的逻辑吗?

© www.soinside.com 2019 - 2024. All rights reserved.