【问题标题】:Add A Year To Today's Date为今天的日期添加一年
【发布时间】:2020-11-08 21:44:44
【问题描述】:

我正在尝试在今天的日期上添加一年。我在一个不允许您使用 standard JavaScript 的系统中工作。

例如,要获取今天的日期,我必须使用:

javascript:now();

我试过了:

javascript:now(+1);

我以前从未见过这个,但我需要在今天的日期上增加一年......

以前有人见过以这种方式获取当前日期吗?如果是这样,我怎么能加一年?

【问题讨论】:

  • 这不是重复的。就像我上面说的,无法使用标准的 javascript 方法
  • 如果您让我们了解一下这段代码是在什么系统中执行的,这可能会有所帮助。

标签: javascript date


【解决方案1】:

使用Date.prototype.setFullYear 方法将年份设置为您想要的年份。

例如:

const aYearFromNow = new Date();
aYearFromNow.setFullYear(aYearFromNow.getFullYear() + 1);
console.log(aYearFromNow);

如果您正在使用的环境中不存在这些方法,那么在 JavaScript 中确实没有其他方法可以处理日期。

【讨论】:

  • 如果您希望依赖权重更轻一些,可以使用moment npm 库或date-fns
  • @a_lovelace 为什么在 vanilla JS 也能完成同样的工作时使用库?
【解决方案2】:

我喜欢把它放在一行中,你可以为此使用自调用函数,例如:

如果您想在一行中获得 +1 年的时间戳

console.log(
  (d => d.setFullYear(d.getFullYear() + 1))(new Date)
)

如果你想用单行获取日期对象

console.log(
  (d => new Date(d.getFullYear() + 1, d.getMonth(), d.getDate()))(new Date)
)

【讨论】:

    【解决方案3】:

    您可以使用以下代码创建一个包含今天日期的新日期对象:

    var d = new Date();
        console.log(d);
    // => 2015 年 10 月 11 日星期日 14:46:51 GMT-0700 (PDT)

    如果你想创建一个特定时间的日期,你可以传递新的 Date 构造函数参数

     var d = new Date(2014);
        console.log(d)
    // => Wed Dec 31 1969 16:00:02 GMT-0800 (PST)
    

    如果要取今天的日期并添加年份,可以先创建一个日期对象,访问相关属性,然后使用它们创建一个新的日期对象

    var d = new Date();
        var year = d.getFullYear();
        var month = d.getMonth();
        var day = d.getDate();
        var c = new Date(year + 1, month, day);
        console.log(c);
    // => Tue Oct 11 2016 00:00:00 GMT-0700 (PDT)
    

    您可以在 MDN 上阅读有关日期对象方法的更多信息

    Date Object

    【讨论】:

    • 不需要创建两个日期对象。 d.setFullYear(d.getFullYear() + 1) 将用更少的代码完成这项工作。
    • 但你也会失去原来的日期
    • 然后:var d = new Date(+originalDate) 将复制原始日期。
    • 这不适用于闰年日期。例如如果您在添加年份后输入 29/02/2016,它将返回 29/02/2017,这是不正确的。
    • @ANP 不,它返回 01/03/2017,这可能仍然不是所需的,但它绝对不会返回不存在的日期 29/02/2017。请记住,在 JavaScript 中,二月是 1,而不是 2。
    【解决方案4】:

    功能

    var date = new Date();
    
    var year = date.getFullYear();
    
    var month = date.getMonth();
    
    month = month + 1;
    
    if (month < 10) {
        month = "0" + month;
    } 
    
    var day = date.getDate();
    
    if (day < 10) {
        day = "0" + day;
    } 
    
    year = year + 1;
    
    var FullDate =  year + '/' + month + '/' + day; 
    

    【讨论】:

      【解决方案5】:
      var yearsToAdd = 5;
      var current = new Date().toISOString().split('T')[0];
      var addedYears = Number(this.minDate.split('-')[0]) + yearsToAdd + '-12-31';
      

      【讨论】:

        【解决方案6】:

        这里建议的一个班轮

        How to determine one year from now in Javascript 通过 JP DeVries

        new Date(new Date().setFullYear(new Date().getFullYear() + 1))
        

        或者您可以从变量中的某个位置获取年数:

        const nr_years = 3;
        new Date(new Date().setFullYear(new Date().getFullYear() + nr_years))
        

        【讨论】:

          【解决方案7】:
              var d = new Date();
              var year = d.getFullYear();
              var month = d.getMonth();
              var day = d.getDate();
          
              var fulldate = new Date(year + 1, month, day);
          
              var toDate = fulldate.toISOString().slice(0, 10);
          
              $("#txtToDate").val(toDate);
          
              output : 2020-01-02
          

          【讨论】:

            【解决方案8】:

            在 Angular 中,这是计算日期的方式

            today = new Date();
            year = this.today.getFullYear();
            month = this.today.getMonth();
            day = this.today.getDate();
            //To go 18 years back
            yearsBack18= new Date(this.year - 18, this.month, this.day);
            
            //To go to same day next year
            nextYear= new Date(this.year + 1, this.month, this.day);
            

            【讨论】:

              【解决方案9】:

              此代码添加日期所需的年数。

              var d = new Date();
              // => Tue Oct 01 2017 00:00:00 GMT-0700 (PDT)
              
              var amountOfYearsRequired = 2;
              d.setFullYear(d.getFullYear() + amountOfYearsRequired);
              // => Tue Oct 01 2019 00:00:00 GMT-0700 (PDT)
              

              【讨论】:

                【解决方案10】:

                //这段代码也将处理闰年的添加。

                function updateExpiryDate(controlID, value) {
                    if ( $("#ICMEffectiveDate").val() != '' &&
                        $("#ICMTermYears").val() != '') {
                
                        var effectiveDate = $("#ICMEffectiveDate").val();
                        var date = new Date(effectiveDate);
                        var termYears = $("#ICMTermYears").val();
                
                        date = new Date(date.setYear(date.getFullYear() + parseInt(termYears)));
                        var expiryDate = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear();
                        $('#ICMExpiryDate').val(expiryDate);
                    }
                }
                

                【讨论】:

                  猜你喜欢
                  • 2019-04-10
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多