题目范例:输入 2008 2 3 ,然后输入需要添加的天数 100 ,输出 2008 5 13 可以用于设置优惠卷过期时间的应用

有两种方式实现,一种是自己写逻辑的方式,第二种是利用date对象直接让date去处理

第一种方式:自己去实现内部判断逻辑

思路:将日期参数放到一个数组当中,然后利用得到的添加天数100,进行循环遍历,一天一天的加,每循环一次,添加天数 -1 ,直到添加天数为0,输出即可。(其中需要判断每个月的天数,是否为闰年,到月底月数+1,到年底年数+1)
代码如下:

// 利用数组存储日期参数
var arr = [2022, 1, 10] //初始日期
var addday = 11 //增加天数
function MyDate(year, month, day) {
    this.day = day
    this.month = month
    this.year = year
}
function MyDateO(date) {
    this.day = date.day
    this.month = date.month
    this.year = date.year
}
MyDate.prototype.day = 1
MyDate.prototype.month = 1
MyDate.prototype.year = 2000

var nowdays = new MyDate(arr[0], arr[1], arr[2])
console.log("现在日期:"+nowdays.year+"年"+nowdays.month+"月"+nowdays.day+"日","添加天数"+ addday);
计算日期,参数为需要增加的天数和现在的日期
function addDays(add_days, nowdays) {
    var temp_data = new MyDateO(nowdays)
    while (true) {
        temp_data = nextDay(temp_data) //计算下一天
        add_days--;             //要增加的天数--
        if (add_days == 0) {    //当要增加的天数等于0时,停止循环
            break;
        }
        
    }
    return temp_data
}
function nextDay(date) { //计算下一天
    // console.log(date);
    if (date.day == isLastDays(date.year, date.month))	//如果是月底
    {
        date.day = 1;									//那么下一天则置天数为1
        date.month++;									//月份++
        if (date.month == 13)							//如果是年底
        {
            date.month = 1;							//那么月份置为1
            date.year++;								//年份加1
        }
    }
    else												//如果不是月底,天数加一即可
        date.day++;
    return date;
}
function isLastDays(year, month) { //返回对应月份的天数
    if (isRun(year) && month == 2)
        return 29;
    if (month == 2)
        return 28;
    if (month == 4 || month == 6 || month == 9 || month == 11)
        return 30;
    return 31;
}
function isRun(year) { //判断是否为闰年
    if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))
        return true;
    else
        return false;
}
var nextdays = addDays(addday, nowdays)
console.log("添加后的日期:"+nextdays.year+"年"+nextdays.month+"月"+nextdays.day+"日");

输出结果如下:

java 代码 优惠券 java优惠券过期_java 代码 优惠券

第二种方式是利用date对象

思路: 我们使用用于处理日期与时间的Date 对象。利用Date对象内部封装好的方法实现

// 第二种方法
 /**
  * startDate:起始日期
  * addDay:有效天数
  * getFullYear() 从 Date 对象以四位数字返回年份。
  * getMonth()	  从 Date 对象返回月份 (0 ~ 11)。所以这里月份要加一
  * getDate()	从 Date 对象返回一个月中的某一天 (1 ~ 31)。这里加上我们自定义的添加天数即可
  */
  function AddDay(startDate,addDay){
    //格式化参数 2022-02-27T00:00:00.000Z
    var date = new Date(startDate);
    // 计算addDay天后的日期 2022 1 32传入date将天数重置
    var newDate = new Date(date.getFullYear(),date.getMonth(),date.getDate()+addDay);
    //计算原来日期
    var year1 = date.getFullYear(); // 2022
    var month1 = date.getMonth()+1; // 2
    var day1 = date.getDate(); // 27
    //计算修改后日期
    var year2 = newDate.getFullYear(); // 2022
    var month2 = newDate.getMonth()+1; // 3
    var day2 = newDate.getDate(); // 4
    
    return "原来日期:"+year1+"年"+month1+"月"+day1+"日"+
            "  修改后的日期" +year2+"年"+month2+"月"+day2+"日";
    
}
var asd = "2022-02-27"
let data = AddDay(asd,5)
console.log(data); // 原来日期:2022年2月27日  修改后的日期2022年3月4日

代码结果如下:

java 代码 优惠券 java优惠券过期_数组_02

end~

这里的输入输出我是直接定义的,如果需要用户去输入那么就要使用js(V8)进行操作,得到用户输入的数字。
获取一行多个数字,2022 2 10这样以空格隔开的代码写法:let arr =readline().split(" ").map(Number),得到的就是[2022,2,10]这样的数组。