2012-06-21 8 views
26

私はクッキーを設定する関数を使用しています。この関数は、クッキー名、クッキー値、およびクッキーの追加有効期限を渡すことができます。クッキーの設定時に有効期限を指定するときに使用できる日付形式はどれですか?

機能:

function setCookie(name, value, exdate) { 
    var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate); 
    document.cookie = name + "=" + c_value; 
}; 

を使用:

setCookie("my-cookie-name","my-value","Sun, 15 Jul 2012 00:00:01 GMT"); 

私は上記の日付形式と機能を使用している場合、私がテストしてきたように、それはクロスブラウザの互換性であると考えていますさまざまなブラウザを閉じてから再び開くと、Cookieが残ります。私は"15 Jul 2012"のようなフォーマットを使用するときに問題があることを発見しました。このフォーマットはfirefoxでの開発中に私のために働いていましたが、他のブラウザはそのクッキーをセッションクッキーとして設定したようでした。

「Sun、2012年7月15日00:00:01 GMT」、または主要なブラウザ(IE 7-X)で動作する有効期限に使用できる他のフォーマットがありますか? 9、Firefox、Chrome、Opera、Safari)

EDIT/UPDATE:

クッキー(下記答える参照)UTC/GMT形式にあると有効期限が必要です。

corect形式ではない渡された日付を変換するために、次のように私の関数を編集しました。

function setCookie(name, value, exdate) { 
     //If exdate exists then pass it as a new Date and convert to UTC format 
     (exdate) && (exdate = new Date(exdate).toUTCString()); 
     var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate); 
     document.cookie = name + "=" + c_value; 
    }; 

答えて

26

試験に基づいており、さらにこの中に読んで、UTC/GMT形式の日付は、クッキー例えばすることにより、必要とされます日、2012年7月15日午後12時00分01秒GMT

2012年7月15日、または15/7月/ 2012、または2012年7月15日などの他の形式のための任意の日付、持っていますnew Dateオブジェクトとして渡され、次にtoUTCString()またはtoGMTString()関数を介して渡されます。

したがって、私は次のように私の機能を編集した:

function setCookie(name, value, exdate) { 
    //If exdate exists then pass it as a new Date and convert to UTC format 
    (exdate) && (exdate = new Date(exdate).toUTCString()); 
    var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate); 
    document.cookie = name + "=" + c_value; 
}; 
0

日付形式MMMM dd、yyyy、hh:mm:ss aaaが見つかりました。誰かが見つけることが有用かもしれません。ここでも非常に良いリンクenter link description here

関連する問題