如何确定Google日历边栏小工具中的当前周

时间:2015-01-10 20:07:16

标签: url google-calendar-api google-gadget

我正在写一个Google Calendar sidebar gadget来跟踪每个事件标记的总小时数(根据事件的详细信息确定,即“标记:工作”)。

用户可以更改他们在日历中查看的当前周,月,日,我希望能够计算与当前视图相关的小时数。

我在gadget API(或任何其他Google Calendar API)中看不到允许小工具访问当前显示的视图的任何内容。我注意到URL有一个类似于

的锚标记

g|week-2+23127+23137+23131

对应于2015年2月23日星期一 - 2015年3月1日星期日以周模式观看。

我也注意到以下关系:

  • 23127是视图中的第一天
  • 23137是视图中的最后一天
  • 23131是月视图(日历左侧)中选择的日期

如果有办法使用API​​获取当前显示的视图,那将是理想的但我会解决锚定标记。不幸的是,我无法破译这些数字是如何运作的。

2 个答案:

答案 0 :(得分:1)

Google API

可以使用以下call

访问当前显示的日期范围
  

google.calendar.subscribeToDates(function(d) { // do something });

其中d是Google date range d.startTimed.endTime是开头和结尾。

数字

网址中的数字与纪元日期和时间不直接对应。相反,每年有512天与之相​​关,每个月有32天。例如,二月有28天定期,但每闰年它有29天。日历从来没有必要调整,因为它只是每个月分配32天,每次出来一个很好的偶数。

仔细检查显示的日期范围还会显示,如果从1月1日减去12月31日的数字,则会得到130.开始和结束的会计(不计入12月31日和1月1日)给你128.

12 * 32 + 128 = 512 - 一年12个月,每月32天,每年128个差距

此外,由于某种原因,1970年1月1日的相关数量为33,因此在确定日期时将其添加到您的计算中。

答案 1 :(得分:1)

这不适合评论,但这是编码的工作原理:

编码方案可以从数字中轻松找到日/月/年。

23131 ,产生 2015年2月27日(来自问题中的示例)。

除以512并为添加1970(纪元)。

  

23131/512 = 45.xxx => 45 + 1970 = 2015

获取该部门的剩余部分并除以32以找到

  

23131 mod 512 = 91/32 = 2.xxx = 二月

获得该部门的其余部分,这是

  

91 mod 32 = 27