2012-06-21 16 views
26

Sto usando una funzione che imposta un cookie. Questa funzione consente di passare il nome del cookie, il valore del cookie e una data di scadenza aggiuntiva del cookie.Quali formati di data posso usare quando si specifica la data di scadenza quando si imposta un cookie?

la funzione:

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

utilizzo:

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

Ho usato la funzione con il formato della data di cui sopra e credere che sia compatibile con cross browser come ho testato se il il cookie rimane dopo aver chiuso vari browser e riaprirli. Ho scoperto che c'erano problemi nell'uso di un formato come "15 Jul 2012". Questo formato ha funzionato per me durante lo sviluppo di Firefox, ma solo altri browser sembravano impostare il cookie come cookie di sessione.

Devo utilizzare solo questo formato: "Dom, 15 Jul 2012 00:00:01 GMT" o ci sono altri formati che potrei usare per la data di scadenza che funzionerà sui principali browser (IE 7- 9, Firefox, Chrome, Opera, Safari)?

EDIT/UPDATE:

cookie richiede la data di scadenza per essere in UTC/GMT Format (vedi risposta qui sotto).

Ho modificato la mia funzione di seguito per convertire le date passate in non nel formato 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; 
    }; 

risposta

26

Sulla base di test e ulteriori letture in questo, una data in un formato/GMT UTC è richiesto dal cookie esempio Sun, 15 luglio 2012 00:00:01 GMT

Pertanto eventuali date in altri formati, come 15 luglio 2012, o 15/Lug/2012, o 2012/07/15, hanno da passare come oggetto new Date e quindi tramite la funzione toUTCString() o toGMTString().

pertanto Ho modificato la mia funzione al seguente:

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

Trovato il formato della data MMMM gg, aaaa, hh: mm: ss aaa. Che qualcuno trovi utile. Ottimo collegamento anche qui enter link description here

Problemi correlati