【问题标题】:jQuery saving Time and expiraton date?jQuery节省时间和到期日期?
【发布时间】:2013-11-07 19:32:58
【问题描述】:

我想知道如何在 jQuery 中保存日期格式。

今天我有了一个使用 jQuery 保存 COOKIE 的想法。

在我查看了来自另一个站点的 COOKIE 的内容后,我发现它将存储日期。

当我尝试对我的网站做同样的事情时,我使用了以下代码:

$.cookie('name', new Date(), { expires: 365 }); 

将设置 COOKIE,但不同之处在于内容将以如下奇怪的格式显示:

Thu%20Nov%2007%202013%2020%3A04%3A49%20GMT%2B0100%20(CET)

当我通过以下方式读出 COOKIE 时:

alert( $.cookie('name') );

它将正确显示日期格式。所以我的第一个问题是如何以正确的形式保存日期,例如:

2013 年 11 月 7 日星期四 20:04:49 GMT+0100 (CET)

而不是上面那种奇怪的格式。

我的第二个问题是如何设置将在特定时间结束的到期日期格式。 此时它会过期

2014 年 11 月 7 日 20:04:49 GMT+0100 (CET)

但我怎样才能让它过期,例如在

2014 年 11 月 7 日 00:00:00 GMT+0100 (CET)

?

非常感谢。

更新:

这是我使用的代码:

...
var now = new Date();
var expireDate = new Date(now.getFullYear(), now.getMonth(), now.getDate());

$.cookie('cookiePolicyConsent', new Date().toString(), { expires: expireDate }); 
...

它不会保存 COOKIE。守则的其余部分仍然有效。只有这行处理了 COOKIE。

【问题讨论】:

  • "那种奇怪的格式" ...你的意思是 URI 编码。您可以使用decodeURI() 函数来获取字符串版本。
  • 如果你得到正确格式的值,你为什么要关心它是如何存储的?

标签: javascript jquery cookies


【解决方案1】:

如果你像这样以毫秒为单位保存日期可能会更容易

$.cookie('name', new Date().getTime(), { expires: 365 }); 

然后当你检索它时

alert( new Date($.cookie('name')) );

【讨论】:

    【解决方案2】:

    第一个问题:

    如果您只想存储文本,请使用toString()。我同意上面的评论......只要你得到正确的值,它的存储方式真的很重要吗?如果您不想将日期对象放入 cookie 中,则可以使用 .UTC() 或 .getTime()

    日期对象上还有其他几个 toString 函数可以帮助您以所需的格式获取它:http://www.w3schools.com/jsref/jsref_obj_date.asp

    第二个问题:

    您可以使用“过期”属性传入日期而不是数字。所以你可以这样做:

    var now = new Date();
    
    // Expire the cookie tonight at midnight
    var expireDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
    
    $.cookie('name', new Date().toString(), { expires: expireDate }); 
    

    【讨论】:

    • 嗨,你在哪里使用 toString 函数?顺便说一句,它根本不保存。谢谢
    • 所以你会做这样的事情:var myDate = new Date(); $.cookie('name', myDate.toString(), { expires: expireDate });
    • 不起作用是什么意思?什么不工作?该代码将为您提供一个字符串....如果您从我之前的评论中复制/粘贴该代码,您将需要创建 expireDate 或将其更改为数字。
    • 整个代码不起作用。使用 expireDate 设置变量时,即它不保存到期日期。甚至使用 tostring 函数 d 也不会将其转换为字符串。和以前一样。
    • 我没有添加 toString() 到日期。我更新了“第二个问题”中的代码
    猜你喜欢
    • 1970-01-01
    • 2021-12-05
    • 2021-07-25
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 2012-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多