GoogleCalendar Datekey - PullRequest
       1

GoogleCalendar Datekey

0 голосов
/ 24 сентября 2019

Google использует уникальные DateKeys для каждого дня в HTML-коде GoogleCalendar, например,

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

Есть ли формула для вычисления даты для данного ключа даты?

1 Ответ

0 голосов
/ 24 сентября 2019

Похоже, что их инженеры использовали 2^9 (512) бит для хранения года:

1.1.1970 (datekey: 33) и 1.1.1971 (datekey: 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);
}

Кто-нибудь знает, почему они придумали такую ​​логику?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...