如何从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。
谢谢!
你应该使用getFullYear()
而不是getYear()
。 getYear()
返回实际年份减去1900年(所以是相当无用的)。
这将在未来一年内创build一个Date
,只需一行。 首先,我们new Date
中获得全年,然后将其增加,并将其设置为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(...)
在这个页面和这里使用一些答案,我想出了自己的答案,因为这些答案都没有完全解决。
这是关键所在
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/
像别人发布一样使用setFullyear,但要注意,这会返回一个时间戳值而不是date对象。 通过原型添加function也是一个很好的select。 这导致我们到以下模式:
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));
我想出了一个简单的解决scheme ,将闰年考虑在内。
例如:
var originalDate = new Date('February 29th, 2016 12:00:00'); var newDate = dateAdd(originalDate, 1, 'years'); // => 'February 28th, 2017
这也适用于其他时间单位,如天,周,月等