Google Calendarで過ぎた日の色を変えるが大分前から動かなくなっているので新しいカレンダーのデザインを調べたのですが、日付のセルに data-datekey という属性が指定されているのに気がつきました。
今日11月14日だと data-datekey="24942" となっています。
最初はどこかの起点から経過日数かと思ったのですが、逆算してみると1950年8月1日??
よく見てみると、月の間や年の間で日数が飛んでいます。ははぁ、これは y*Y+m*M+d みたいな形式だなぁ。
24609 | 2018-01-01 |
24927 | 2018-10-31 |
24929 | 2018-11-01 |
24958 | 2018-11-30 |
24961 | 2018-12-01 |
24991 | 2018-12-31 |
25121 | 2019-01-01 |
うーん……2018年1月1日から2019年1月1日が 25121-24609=512 (=2^9)、11月1日から12月1日が 24961-24929=32 (=2^5)。
- 1年で512
- 1月で32
- 1日で1
つまり
(y-1970)*512 + m*32 + d
※(m、dは1から始まる月、日)
ビット演算でやるなら
((y-1970)<<9) | (m<<5) | d
ですね。
[…] このdatekeyの数字の意味については Googleカレンダーのdata-datekeyの謎 […]