Какие форматы даты можно использовать при указании даты истечения срока действия при настройке файла cookie?
Я использую функцию, которая устанавливает cookie. Эта функция позволяет передавать в него имя куки-файла, значение куки-файла и дополнительную дату истечения срока действия куки-файла.
the function:
function setCookie(name, value, exdate) {
var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate);
document.cookie = name + "=" + c_value;
};
usage:
setCookie("my-cookie-name","my-value","Sun, 15 Jul 2012 00:00:01 GMT");
Я использовал функцию с указанным выше форматом даты и считаю, что она совместима с несколькими браузерами, поскольку я проверял, сохраняется ли файл cookie после закрытия различных браузеров и их повторного открытия. Я обнаружил, что были проблемы при использовании такого формата, как"15 Jul 2012"
, Этот формат работал для меня во время разработки в Firefox, но другие браузеры, казалось, устанавливали cookie только как cookie сессии.
Should I stick to using just this format: "Sun, 15 Jul 2012 00:00:01 GMT" or are there other formats I could use for the expiry date that will work across the major browsers (IE 7-9, Firefox, Chrome, Opera, Safari)?
EDIT/UPDATE:
Для файлов cookie требуется срок действияUTC/GMT Format (см. ответ ниже).
Я отредактировал свою функцию следующим образом, чтобы преобразовать любые прошедшие даты, которые не в формате 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;
};