Quais formatos de data posso usar ao especificar a data de expiração ao definir um cookie?
Eu estou usando uma função que define um cookie. Essa função permite que o nome do cookie, o valor do cookie e uma data de expiração adicional do cookie sejam passados para ele.
a função:
function setCookie(name, value, exdate) {
var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate);
document.cookie = name + "=" + c_value;
};
uso:
setCookie("my-cookie-name","my-value","Sun, 15 Jul 2012 00:00:01 GMT");
Eu usei a função com o formato de data acima e acredito que seja compatível com vários navegadores, já que testei se o cookie permanece depois de fechar vários navegadores e reabri-los. Eu descobri que havia problemas ao usar um formato como"15 Jul 2012"
. Este formato funcionou para mim durante o desenvolvimento no firefox, mas outros navegadores pareciam apenas definir o cookie como um cookie de sessão.
Devo continuar usando apenas este formato: "Sun, 15 Jul 2012 00:00:01 GMT" ou existem outros formatos que eu poderia usar para a data de expiração que funcionará nos principais navegadores (IE 7-9, Firefox, Chrome , Opera, Safari)?
EDITAR / ATUALIZAR:
Os cookies exigem que a data de expiração estejaFormato UTC / GMT (veja a resposta abaixo).
Eu editei minha função para o seguinte, a fim de converter quaisquer datas passadas que não estão no 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;
};