在一天结束时设置到期日

时间:2014-02-03 23:48:32

标签: javascript date cookies

我正在尝试设置一个将在当天结束时过期的Cookie。我创建了这个函数:

function mnc(cname,cvalue)
{
    var now = new Date();
    var expire = new Date();

    expire.setFullYear(now.getFullYear());
    expire.setMonth(now.getMonth());
    expire.setDate(now.getDate()+1);
    expire.setHours(0);
    expire.setMinutes(0);

    //alert(expire.toGMTString() + " " + expire.toString());
    var expires = "expires="+expire.toString();
    alert(expires + "=> now =" + now);
    document.cookie = cname + "=" + cvalue + "; " + expires +"; path=/";
}

小提琴:http://jsfiddle.net/MYs6b/

因此,警告框显示了良好的到期日期。 但是,如果我通过添加1或100天来更改计算机上的日期,我仍然在cookie中具有相同的值。

为什么呢?我正在搜索3个小时,我不明白......

编辑:

我对“document.cookie”的警告是空的

http://jsfiddle.net/MYs6b/2/

编辑2: 我添加了一个更好的问题示例。它正在使用IE和FF,但不适用于chrome:

http://jsfiddle.net/5h87M/1/

3 个答案:

答案 0 :(得分:1)

试试这个:http://jsfiddle.net/MYs6b/1/

function mnc(cname,cvalue)
{
    var now = new Date();
    var expire = new Date();

    expire.setFullYear(now.getFullYear());
    expire.setMonth(now.getMonth());
    expire.setDate(now.getDate()+1);
    expire.setHours(0);
    expire.setMinutes(0);
    expire.setSeconds(0);

    var expires = "expires="+expire.toString();
    alert(expires + "=> now =" + now);
    document.cookie = cname + "=" + cvalue + "; " + expires +"; path=/";
}

mnc("test", "123456");

答案 1 :(得分:0)

Chrome的上次更新纠正了这个问题。

答案 2 :(得分:0)

function createCookie(name,value,path) {
    var expires = "";
    var date = new Date();
    var midnight = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 23, 59, 59);
    expires = "; expires=" + midnight.toGMTString();

    if (!path) {
        path = "/";
    }

    document.cookie = name + "=" + value + expires + "; path=" + path;
}