如何在 Javascript 中确定一年以后

我在努力争取一年后的约会,但是没用。

约翰逊:

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 中。

谢谢!

192308 次浏览

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

因此,从现在起正好一年的日期是:

var oneYearFromNow = new Date();
oneYearFromNow.setFullYear(oneYearFromNow.getFullYear() + 1);

请注意,如果你在2月29日这样做,日期将会被调整。

类似地,您可以通过 getMonth()setMonth()获得一个月后的日期。如果你在12月份做的话,你不必担心从当前年份“滚转”到下一年份; 日期会自动调整。通过 getDate()setDate()每月的一天也是如此。

这将创建一个 Date正好一年在未来只有一行。首先我们从 new Date得到 fullYear,递增,设为 new Date的年份。您可能认为我们已经完成了,但是如果我们停止,它将返回一个时间戳,而不是一个 Date对象,所以我们将整个事情包装在一个 Date构造函数中。

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

由于 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(...)包装它

像其他人发布的那样使用 setFullyear,但要注意它返回的是时间戳值而不是日期对象。它也是通过原型添加功能的一个很好的候选 imho。这使我们得出以下模式:

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));

使用本页和 给你中的一些答案, 我想出了自己的答案,因为没有一个答案能完全解决我的问题。

这就是症结所在

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/

用非常简单的方法,用这个代码。

// 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);" />

用这个:

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