javascript - 谷歌日历日期键

标签 javascript html google-calendar-api

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

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

最佳答案

它看起来像 dateKey表示自 1.1.1970 以来的天数以针对字节移位优化的格式。
一年有2^9 (512) 天。
一个月有2^5 (32) 天。
计算 datekey对于 01.01.1970你会计算:

0 years (since 1970) * 512
+ 1 month * 32
+ 1 day
= 33


计算 datekey对于 01.01.2000你会计算:

30 years (since 1970) * 512
+ 1 month * 32
+ 1 day
= 15393


要计算给定日期键的日期,您可以执行相反的操作。
模计算可能如下所示:
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);
}
有谁知道他们为什么想出这样的逻辑?

关于javascript - 谷歌日历日期键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58080616/

相关文章:

javascript - 用于对数据进行分组的正则表达式

javascript - dc.js barChart 条重叠

html - 为什么我的嵌入式 YouTube 视频在 Firefox 中有效,但在 Internet Explorer 中无效?

javascript - 如何使 jQuery Mega Menu 下拉?

javascript - HTML 'behind' Javascript 因此阻止看到任何文本

android - 按日期和时间排序的日历查询

ubuntu - 如何在谷歌日历 cli 中邀请与会者

javascript - 将 javascript 对象数组发送到 MVC4 Controller

javascript - Firefox for Android 输入文件 onchange 在使用相机时不会触发

javascript - 如何创建 "Subscribe to Calendar"链接到适用于 Android 版 Google 日历的 ics 文件?