【问题标题】:Setting an expiration date with javaScript is not working correctly使用 javaScript 设置过期日期无法正常工作
【发布时间】:2021-12-09 22:32:41
【问题描述】:
  const cookieButton = document.getElementById('store-cookie')

  cookieButton.addEventListener('click', e => {
    const input = document.getElementById('fav-cookie').value
    let date = new Date()
    let minutes = 30;
    date.setTime(date.getTime() + (minutes * 60 * 1000))
    document.cookie = `favCookie=${input}; expires=${date.toTimeString()};`
  })

我正在处理一个只能在 javaScript 中使用的编码问题。它需要在按下按钮时使用输入字段的值(在链接的 html 上)制作一个 cookie。这个问题的奖励要求 cookie 在创建 30 分钟后过期。目前,此代码只是保存 favCookie=input; 但它没有添加到期日期。任何帮助将不胜感激!

【问题讨论】:

  • 您可以更语义化地添加分钟为date.setMinutes(date.getMinutes() + 30)。 :-)

标签: javascript html date cookies addeventlistener


【解决方案1】:

您可以创建 2 个日期变量,第二个使用 setMinutes 方法将 30 分钟添加到当前时间,然后创建一个函数以在当前日期/时间等于新日期时清除/更改值。

 var expire = new Date();
 expire.setMinutes( expire.getMinutes() + 30 );

【讨论】:

    【解决方案2】:

    请改用toUTCString()

     const cookieButton = document.getElementById('store-cookie');
     cookieButton.addEventListener('click', e => {
        const input = document.getElementById('fav-cookie').value;
        const date = new Date();
        date.setTime(date.getTime() + (30* 60 * 1000));
       document.cookie = `favCookie=${input}; expires=${date.toUTCString()};`;
     });
    

    Cookie 总是很棘手。我相信这是因为您的时间戳应该像这样格式化:

    2021-10-23T20:32:38.000Z

    相反,您目前已由toTimeString() 设置

    22:29:12 GMT+0200 (Central European Summer Time)

    【讨论】:

    • 哇是的,就是这样。现在一切都检查出来了,我只需要记住正确的格式!
    猜你喜欢
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多