2012-06-21 17 views
26

Bir çerez ayarlayan bir işlev kullanıyorum. Bu fonksiyon, çerez isminin, çerez değerinin ve çerezin içine aktarılacağı ek bir son kullanma tarihine izin verir.Bir çerez ayarlarken son kullanma tarihini belirlerken hangi tarih biçimlerini kullanabilirim?

fonksiyonu:

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

kullanımı:

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

Yukarıda tarih biçimindeki işlevi kullanılmış ve ben eğer test gibi çapraz tarayıcı uyumlu olduğuna inanıyoruz Çerez çeşitli tarayıcıları kapatıp tekrar açtıktan sonra kalır. "15 Jul 2012" gibi bir format kullanırken sorun olduğunu keşfettim. Bu biçim, firefox'taki geliştirme sırasında benim için çalıştı, ancak diğer tarayıcılar yalnızca çerezi bir oturum çerezi olarak ayarladı.

Sadece bu formatı kullanmamalı mıyım: "Sun, 15 Jul 2012 00:00:01 GMT" veya büyük tarayıcılarda çalışacak son kullanma tarihi için kullanabileceğim başka formatlar var mı (IE 7- 9, Firefox, Chrome, Opera, Safari)?

DÜZENLEME/GÜNCELLEME:

Çerezler (aşağıya cevap bakınız) UTC/GMT Format olmak son kullanma tarihi gerektirir.

Geçtiğimiz tarihler, biçim biçiminde olmayanları dönüştürmek için, işlevimi aşağıdakine düzenledim.

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; 
    }; 

cevap

26

testi doğrultusunda ve daha fazla bu işe, okuma UTC/GMT biçimde bir tarih kurabiye örn gerektirdiği Güneş, 15 Temmuz 2012 00:00:01 GMT

böyle 15 Tem 2012 veya 15/Temmuz/2012 veya 07/15/2012gibi diğer formatlarda nedenle herhangi bir tarih var new Date nesnesi olarak geçirilecek ve ardından toUTCString() veya toGMTString() işleviyle.

nedenle aşağıdaki benim işlevi düzenledikten:

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

Tarih biçimi şu şekildedir: MMMM dd, yyyy, ss: dd: ss aaa. Birisi bulmak yararlı olabilir. Ayrıca burada çok iyi bağlantı enter link description here

İlgili konular