Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置cookie时指定到期日期时可以使用哪些日期格式?_Javascript_Cookies - Fatal编程技术网

Javascript 设置cookie时指定到期日期时可以使用哪些日期格式?

Javascript 设置cookie时指定到期日期时可以使用哪些日期格式?,javascript,cookies,Javascript,Cookies,我正在使用一个设置cookie的函数。此函数允许将cookie名称、cookie值和cookie的附加到期日期传递给它 function setCookie(name, value, exdate) { var c_value = escape(value) + ((exdate === null || exdate === undefined) ? "" : "; expires=" + exdate); document.

我正在使用一个设置cookie的函数。此函数允许将cookie名称、cookie值和cookie的附加到期日期传递给它

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

setCookie("my-cookie-name","my-value","Sun, 15 Jul 2012 00:00:01 GMT");
我已经使用了上述日期格式的函数,并且相信它是跨浏览器兼容的,因为我已经测试了在关闭各种浏览器并重新打开它们之后cookie是否仍然存在。我发现在使用类似于
“2012年7月15日”
的格式时出现了问题。在Firefox的开发过程中,这种格式对我很有效,但其他浏览器似乎只将cookie设置为会话cookie


我是否应该坚持使用以下格式:
“Sun,2012年7月15日00:00:01 GMT”
,或者是否有其他格式可以在主要浏览器(IE 7-9、Firefox、Chrome、Opera、Safari)中使用,以测试和进一步阅读为基础,Cookie需要UTC/GMT格式的日期,例如2012年7月15日00:00:01 GMT的太阳

因此,其他格式的任何日期,如2012年7月15日、2012年7月15日或2012年7月15日,都必须作为新日期对象传递,然后通过
toutstring()
togmstring()
函数传递

因此,我将我的函数编辑为以下内容:

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;
};
使用
cookie日期格式,因此
“Sun,2012年7月15日00:00:01 GMT”
有效


如果我理解正确,将识别其他格式,例如:
00:00:01 2012年7月15日
,但不应生成这些格式。

找到日期格式
ddd,dd-MMM-yyyy-HH':'mm':'ss'GMT'
。希望有人发现这是有用的。另外,非常好的参考资料

实际上有3种格式支持空格(
Sun,1994年11月6日08:49:37 GMT
)、破折号(
Sunday,1994年11月6日08:49:37 GMT
)和“混合格式”(
Sun,1994年11月6日08:49:37 GMT
)@Alexiswillke单击链接(其中包含
rfc1123日期)是的,我看到另外两个标记为不推荐。所以你应该只使用第一个。你能添加一个链接,显示你在哪里找到的信息吗?