您好我需要将此cookie设置为一个月

时间:2014-11-13 02:04:19

标签: javascript function cookies

我只需要将此功能设置为在一个月内过期,有人可以告诉我该怎么做吗?

function _saveUserPreference() {
  // Set the cookie expiry to one year after today.
  var expiryDate = new Date();
  expiryDate.setFullYear(expiryDate.getFullYear() + 1);
  document.cookie = cookieName + '=y; expires=' + expiryDate.toGMTString();
}

3 个答案:

答案 0 :(得分:4)

您需要在expiryDate var:

中添加一个月
  var expiryDate = new Date();
  expiryDate.setMonth(expiryDate.getMonth() + 1);

答案 1 :(得分:0)

    function _saveUserPreference(){
        var montharr = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
            expiryDate = new Date(),
            year = expiryDate.getFullYear(),
            month = expiryDate.getMonth(),
            date = expiryDate.getDate();

        var newMonth, newYear;

        expiryDate.setMonth(month+1);

        newMonth = expiryDate.getMonth();

        newYear = expiryDate.getFullYear();
        // when expiryDate is 2014-01-31, setMonth(m+1),then expiryDate is 2014-03-03 or 2014-03-02
        if(newMonth - month > 1 ){

            if( isLeapYear(year) && newMonth === 2 ){
                expiryDate.setDate(29);
                expiryDate.setMonth(1);
            }else{
                expiryDate.setDate(montharr[newMonth-1]);
                expiryDate.setMonth(newMonth-1);
            }
        }

        document.cookie = cookieName + '=y; expires=' + expiryDate.toGMTString();

        // if you mean a month to 30 days

        /*var now = new Date(),
            milliSeconds = now - 0 + 30 * 24 * 3600 * 1000,
            expiryDate = new Date(milliSeconds);

        document.cookie = cookieName + '=y; expires=' + expiryDate.toGMTString();*/

    }

    function isLeapYear(year){

        if( year%4 === 0 && year%100 !== 0 ){
            return true;
        }

        if( year%100 === 0 && year%400 === 0 ){
            return true;
        }

        return false;
    } 

答案 2 :(得分:0)

我没有足够的意见要发表,而是要to依@ ianaya89的答案。

let expiryDate = new Date();
const month = (expiryDate.getMonth() + 1) % 12;
expiryDate.setMonth(month);

new Date =获取今天的日期。 然后,下一行是下个月。对于当前为12月的边缘情况,我们使用模数,我们希望它返回1,而不是13。 然后,我们为cookie设置变量expiryDate(现在提前一个月)。