¿Qué formatos de fecha puedo usar al especificar la fecha de caducidad al configurar una cookie?

Estoy usando una función que establece una cookie. Esta función permite que el nombre de la cookie, el valor de la cookie y una fecha de caducidad adicional de la cookie se transfieran a ella.

la función:

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");

He utilizado la función con el formato de fecha anterior y creo que es compatible con todos los navegadores, ya que he probado si la cookie permanece después de cerrar varios navegadores y volver a abrirlos. Descubrí que había problemas al usar un formato como"15 Jul 2012". Este formato funcionó para mí durante el desarrollo en Firefox, pero otros navegadores solo parecían configurar la cookie como una cookie de sesión.

Debo seguir usando solo este formato: "Sun, 15 Jul 2012 00:00:01 GMT" o hay otros formatos que podría usar para la fecha de caducidad que funcionará en los principales navegadores (IE 7-9, Firefox, Chrome). , Opera, Safari)?

EDITAR / ACTUALIZAR:

Las cookies requieren que la fecha de caducidad esté enFormato UTC / GMT (ver respuesta abajo).

He editado mi función a la siguiente con el fin de convertir las fechas pasadas que no están en el formato correcto.

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta