7

I have this JavaScript code:

function spu_createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else
        var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

How can I make the cookie expire after 2 hours?

4

6 回答 6

10

如果要使用相同类型的函数,请将days参数转换为hours并传递2以获取 2 小时的到期日期。

function spu_createCookie(name, value, hours)
{
    if (hours)
    {
        var date = new Date();
        date.setTime(date.getTime()+(hours*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else
    {
        var expires = "";
    }

    document.cookie = name+"="+value+expires+"; path=/";
}
于 2013-09-28T16:20:56.267 回答
5

尝试这个:

function writeCookie (key, value, hours) {
    var date = new Date();

    // Get milliseconds at current time plus number of hours*60 minutes*60 seconds* 1000 milliseconds
    date.setTime(+ date + (hours * 3600000)); //60 * 60 * 1000

    window.document.cookie = key + "=" + value + "; expires=" + date.toGMTString() + "; path=/";

    return value;
};

用法:

<script>
writeCookie ("myCookie", "12345", 24);
</script>
//for 24 hours
于 2013-09-28T16:03:25.360 回答
5

嗯 - 最明显的事情是让“过期”日期+2小时?:)。在这里你有一个很好的原型: Add hours to Javascript Date object?

于 2013-09-28T16:05:13.953 回答
1

试试jquery-cookie。使使用 cookie 变得非常容易。

于 2013-09-28T16:06:38.890 回答
1

下面的单行程序将设置一个 cookie,name其值为 ,value并从其创建时开始过期两个小时。如果提供了可选参数 ,days则 cookie 将在该天后过期。

警告:没有错误检查,所以如果在调用时省略了强制参数,或者参数输入错误,函数将抛出错误。

spu_createCookie = (name, value, days) => { document.cookie = `${name}=${value}; expires=${new Date(Date.now() + (days ? 86400000 * days : 7200000)).toGMTString()}; path=/` }

相关 JavaScript 语法概念:

  1. Arrow Functions

箭头函数表达式是传统函数表达式的紧凑替代方案,但受到限制且不能在所有情况下使用。

  1. Template Literals

模板文字是允许嵌入表达式的字符串文字。您可以使用多行字符串和字符串插值功能。

  1. Ternary Operators

条件(三元)运算符是唯一一个接受三个操作数的 JavaScript 运算符……此运算符经常用作 if 语句的快捷方式。

于 2021-08-09T18:19:58.713 回答
0

这样就可以了。

var now = new Date();
var time = now.getTime();
time += 7200 * 1000;
now.setTime(time);
document.cookie = 
     name+ '=' + value + 
     '; expires=' + now.toGMTString() + 
     '; path=/';
于 2013-09-28T16:21:28.300 回答