将今年添加到今天的日期

Cod*_*ode 51 javascript date

我想在今天的日期添加一年.我在一个不允许你使用standardJavaScript 的系统中工作.

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

javascript:now();
Run Code Online (Sandbox Code Playgroud)

我试过了:

javascript:now(+1);
Run Code Online (Sandbox Code Playgroud)

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

有没有人见过这样的当前约会?如果是这样,我怎么能加一年?

Jon*_*ams 76

您可以使用以下代码创建具有今天日期的新日期对象:

var d = new Date();
console.log(d);
// => Sun Oct 11 2015 14:46:51 GMT-0700 (PDT)
Run Code Online (Sandbox Code Playgroud)

如果要在特定时间创建日期,可以传递新的Date构造函数参数

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

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

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

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

日期对象

  • 无需创建两个日期对象.`d.setFullYear(d.getFullYear()+ 1)`将以更少的代码完成工作. (49认同)
  • 这不适用于闰年日期.例如,如果您在添加一年后输入29/02/2016,它将在2017年2月29日返回,这是不正确的. (8认同)
  • @ANP不,它返回01/03/2017,这可能仍然不是所需要的但它肯定不会返回不存在的日期29/02/2017.请记住,在JavaScript中,二月是1,而不是2. (3认同)
  • 但你也将失去原始日期 (2认同)

Jon*_*ops 61

使用Date.prototype.setFullYear方法将年份设置为您希望的年份.

例如:

var aYearFromNow = new Date();
aYearFromNow.setFullYear(aYearFromNow.getFullYear() + 1);
Run Code Online (Sandbox Code Playgroud)

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

  • @a_lovelace 当普通 JS 也能完成同样的工作时为什么还要使用库呢? (7认同)

Luc*_*ido 7

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

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)
Run Code Online (Sandbox Code Playgroud)


Sze*_*obe 5

如此处建议的一种衬板

JP DeVries 如何用JavaScript确定从现在起一年

new Date(new Date().setFullYear(new Date().getFullYear() + 1))
Run Code Online (Sandbox Code Playgroud)

或者,您可以从变量中的某处获取年数:

const nr_years = 3;
new Date(new Date().setFullYear(new Date().getFullYear() + nr_years))
Run Code Online (Sandbox Code Playgroud)


小智 5

我喜欢将其放在一行中,您可以为此使用自调用函数,例如:

如果你想在一行中获取+1 年的时间戳

console.log(
  (d => d.setFullYear(d.getFullYear() + 1))(new Date)
)
Run Code Online (Sandbox Code Playgroud)

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

console.log(
  (d => new Date(d.getFullYear() + 1, d.getMonth(), d.getDate()))(new Date)
)
Run Code Online (Sandbox Code Playgroud)