我只需要将此功能设置为在一个月内过期,有人可以告诉我该怎么做吗?
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();
}
答案 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(现在提前一个月)。