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

questionAnswers(3)

yourAnswerToTheQuestion