如何在Javascript中确定从现在开始的一年

时间:2011-12-22 20:17:50

标签: javascript

我想从现在开始一年过去,但它没有用。

JS:

var now = new Date();

var oneYr = new Date();
oneYr.setYear(now.getYear() + 1);
$("#yearFromNow").append(oneYr.toString());

var oneMonth = new Date();
oneMonth.setMonth(now.getMonth() + 1);
$("#monthFromNow").append(oneMonth.toString());

输出:

one mo. = Thu Dec 22 112 15:16:01 GMT-0500 (Eastern Standard Time)

one yr. = Sun Jan 22 2012 15:16:01 GMT-0500 (Eastern Standard Time)

这一年有Dec 22 112 - ??月份正确显示Jan 22 2012

如果你想修补它,http://jsbin.com/alezaj/edit#javascript,html,live。这是在Chrome和Firefox中。

谢谢!

8 个答案:

答案 0 :(得分:158)

这将在未来一年内创建一个Date只有一行。首先,我们从fullYear获取new Date,将其递增,将其设置为new Date的年份。你可能认为我们会在那里完成,但如果我们停止它会返回一个时间戳,而不是Date对象,所以我们将整个事物包装在Date构造函数中。

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

答案 1 :(得分:50)

您应该使用getFullYear()代替getYear()getYear()返回实际年份减去1900(因此相当无用)。

答案 2 :(得分:26)

不推荐setYear(),正确的变体是:

// plus 1 year
new Date().setFullYear(new Date().getFullYear() + 1)
// plus 1 month
new Date().setMonth(new Date().getMonth() + 1)
// plus 1 day
new Date().setDate(new Date().getDate() + 1)

所有示例都返回Unix时间戳,如果您想获取Date对象 - 只需用另一个new Date(...)

包装它

答案 3 :(得分:6)

使用此页面上的一些答案和here, 我想出了自己的答案,因为这些答案都没有为我完全解决。

这是它的关键

var startDate = "27 Apr 2017";
var numOfYears = 1;
var expireDate = new Date(startDate);
expireDate.setFullYear(expireDate.getFullYear() + numOfYears);
expireDate.setDate(expireDate.getDate() -1);

这里有一个JSFiddle,它有一个工作示例:https://jsfiddle.net/wavesailor/g9a6qqq5/

答案 4 :(得分:1)

使用setFullyear,因为其他人已发布但请注意这会返回时间戳值而不是日期对象。通过原型添加功能也是一个很好的候选人。这导致我们采用以下模式:

Date.prototype.addYears = function(n) {
    var now = new Date();
    return new Date(now.setFullYear(now.getFullYear() + n));
};

console.log('Year from now is', new Date().addYears(1));

答案 5 :(得分:0)

以非常简单的方式。使用此代码。

// define function 
function nextYearDate(date1) {
    var date2 = new Date(date1);
    var date3 = date2.setDate(date2.getDate() - 1);
    var date = new Date(date3);
    var day = date.getDate();
    var month = date.getMonth()+1;
    var year = date.getFullYear()+1;
    var newdate = year + '-' + (month < 10 ? '0' : '') + month + '-' + (day < 10 ? '0' : '') + day;
    $("#next_date").val(newdate);
}
// call function.
<input type="date" name="current_date" id="current_date" value="" onblur="nextYearDate(this.value);" />

<input type="date" name="next_date" id="next_date" value="" onblur="nextYearDate(this.value);" />

答案 6 :(得分:0)

使用此:

var startDate = new Date();
    startDate.setFullYear(startDate.getFullYear() - 1);

答案 7 :(得分:0)

2020

这是一个完美的日期/时间库,名为Moment.js,您只需编写以下内容即可:

moment().subtract(1,'year')

并调用您想要的任何格式:

moment().subtract(1,'year').toDate()
moment().subtract(1,'year').toISOString()

在此处查看完整文档: https://momentjs.com/