我正在尝试在今天的日期上添加一年。我正在使用一个不允许您使用标准JavaScript的系统。
例如,为了获取今天的日期,我必须使用:
javascript:now();
我尝试过:
javascript:now(+1);
我之前从未见过这种情况,但需要将今天的日期加一年。
有人用过这种获取当前日期的方法吗?如果有,如何添加一年?
我正在尝试在今天的日期上添加一年。我正在使用一个不允许您使用标准JavaScript的系统。
例如,为了获取今天的日期,我必须使用:
javascript:now();
我尝试过:
javascript:now(+1);
我之前从未见过这种情况,但需要将今天的日期加一年。
有人用过这种获取当前日期的方法吗?如果有,如何添加一年?
使用Date.prototype.setFullYear方法将年份设置为所需值。
例如:
const aYearFromNow = new Date();
aYearFromNow.setFullYear(aYearFromNow.getFullYear() + 1);
console.log(aYearFromNow);
如果您所使用的环境中没有这些方法,那么在 JavaScript 中处理日期就真的没有其他方式了。
moment
npm 库或 date-fns
。 - a_lovelace2020-02-29
加上1年,输出结果会是2021-03-01
。然而,正确的结果应该是2021-02-28
。 - undefined您可以使用以下代码创建一个以今天日期为基础的新日期对象:
var d = new Date();
console.log(d);
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 上了解有关日期对象方法的更多信息。
d.setFullYear(d.getFullYear() + 1)
可以用更少的代码完成这项工作。 - RobGvar d = new Date(+originalDate)
将复制原始日期。 - RobG按照建议在此处提供一行代码
如何在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))
这段代码会增加日期所需的年数。
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)
我喜欢将其放在一行中,您可以使用自调用函数实现,例如:
如果您想要在单行中获取一年后的时间戳
console.log(
(d => d.setFullYear(d.getFullYear() + 1))(new Date)
)
如果您想用一行代码获得 Date 对象
console.log(
(d => new Date(d.getFullYear() + 1, d.getMonth(), d.getDate()))(new Date)
)
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);
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
Date.UTC()
可以避免时区的时间影响。2020-02-29
加一(1)年应该得到2021-02-28
,而不是其他解决方案所建议的2021-03-01
。
function addYears(date,years) {
date = new Date(date);
let day = date.getDate(),
newDate = new Date(Date.UTC(date.getFullYear()+years,date.getMonth(),date.getDate(),0));
newDate.getDate() != day && newDate.setDate(0);
return newDate;
}
//===== Test samples =====
console.log(addYears("2020-02-28",1)); // 2021-02-28 T00:00:00.000
console.log(addYears("2020-02-29",1)); // 2021-02-28 T00:00:00.000
console.log(addYears("2020-02-29",12)); // 2032-02-29 T00:00:00.000
console.log(addYears("2020-12-31",12)); // 2032-12-31 T00:00:00.000
console.log(addYears("2020-03-01",24)); // 2044-03-01 T00:00:00.000
console.log(addYears("2020-03-01",-5)); // 2015-03-01 T00:00:00.000
//这段代码将同时处理闰年的加法。
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);
}
}
var yearsToAdd = 5;
var current = new Date().toISOString().split('T')[0];
var addedYears = Number(this.minDate.split('-')[0]) + yearsToAdd + '-12-31';