Cookieの有効期限の算出法にかかわるJavaScriptについて調べてみました。
有効期限のシリアル値の計算式は?
Blogger:ページビュー設定(3)Chromeで自分のビューを追跡しないで設定した_nsというCookieについて有効期限を調べてみます。
まずChromeの「要素を検証」機能で_nsの有効期限を見てみます。
Chromeでp--q.blogspot.jpを開いて、右クリック→「要素の検証」→Resources→Cookies。
.p--q.blogspot.jpの_nsのExpires/Max-Ageは「Sun, 09 Aug 2015 11:53:58 GMT」になっています。
今度はChromeの拡張機能のGnaw Cookieを使って_nsをみてます。
Gnaw CookieをインストールしたChromeでp--q.blogspot.jpを開いて、右クリック→「Show cookies of this site」。
「p--q.blogspot.jp」と入力して「Get Cookie」します。
expirationDateは「1439121238.295419」になっています。
「Sun, 09 Aug 2015 11:53:58 GMT」=「1439121238.295419」
のようですがどうやって計算しているのでしょう?
「Sun, 09 Aug 2015 11:53:58 GMT」=「1439121238.295419」ではなかった、、、
cookieの期限を指定する-JavaScript入門ここに丁寧に解説があります。
シリアル値に計算するJavaScriptも書いてありますのでこれを参考に現在日時から指定日数後のグリニッジ標準時(GMT)のシリアル値を算出するツールを作ってみました。
計算ボタンを押すと結果が下の枠にでます。
今度は「Sun, 09 Aug 2015 11:53:58 GMT」をシリアル値に変換するツールを作りました。
これは「1439121238000」になりますね。
先ほどみた「1439121238.295419」はどうやって出した数字かわかりませんでした。
次にシリアル値からグリニッジ標準時(GMT)を計算するツールです。
今回JavaScriptについてわかったこと。
シリアル値は「1970年1月1日午前0時グリニッジ標準時(GMT)」からの「ミリ秒」値。
変数のデータ型は宣言で固定されない。
日時の計算はすべてシリアル値(ミリ秒)にして計算する。
シリアル値を日時に変換する「変数.setTime(シリアル値)」は日時が代入されたあとの変数にしか使えない。
大文字と小文字が区別される。
isNaN(変数)で半角数字が判別できる。
Date.parse("日時文字列")で日時文字列をシリアル値に変換できる。
シリアル値を日時に変換する「new Date(シリアル値)」では「new Date(stringの0)」が「東京標準時2000年1月1日午前0時」に変換される。(stringの0)=946652400000ということ?
シリアル値を日時に変換する「new Date(シリアル値)」は「new Date(numericの0)」が「東京標準時1970年1月1日午前9時」に変換される。つまり「1970年1月1日午前0時グリニッジ標準時(GMT)」。
変数を使わずに式を入れ子にしていくと動かないものがある。
alertの中で「や」、など使うとコード表示されてしまう。(解法はきっとあるはず。)
参考にしたサイト
cookieの期限を指定する-JavaScript入門
Cookieの期限のシリアル値の算出方法について詳しく解説されています。
WEST MiRa JavaScript:基本操作 - フォームの値を取得&表示 - 7.テキストエリアに値を表示
textareaの使い方。
【JavaScript】日付/時刻データを操作する(Dateオブジェクト) - みこむらめもむらむらむら
Dateオブジェクトについて網羅的に解説されています。
新JavaScript入門 13 Date
Dateオブジェクトについての例がわかりやすいです。
JavaScriptのデータ型と変数 - Slow Dance
JavaScriptのデータ型はstring, numeric, booleanの3つしかないそうです。String, Number, Booleanオブジェクトもあるらしいです。
JavaScript_データの型
型変換方法も載っています。
isNaN/JavaScriptリファレンス
指定した値が数値かどうかを調べます。
GMT と UTC の違いは何 ?[CITIZEN-シチズン腕時計]
.toGMTString()で計算しているのにIEだけなぜかUTCと表示されてしまいます。
0 件のコメント:
コメントを投稿