首页 > 解决方案 > 使用 JQuery 获取未来 180 天,但当前获取日期,例如 02/30/XX

问题描述

我有一个输入 type="date" 并且我正在尝试将最小数字设置为今天,将最大数字设置为从现在开始的 180 天(包括/不包括今天,此时无关紧要)。

我可以得到今天并将其设置为最小值。没关系。

当我尝试将最大值设置为 180 时,该函数返回不存在的日期,例如 2 月 31 日。根据https://www.convertunits.com/dates/daysfromnow/180,从今天(2019 年 9 月 3 日)起的 180 天将是 2020 年 3 月 1 日。我的代码中的计算大致正确的日期,但允许非存在日期?

注意:如果我将其更改为 181 天(即今天之后的 180 天),那就可以了,但明年就不行了。当日期不存在时,它不会抛出任何错误,它只是允许用户选择他们想要的任何未来日期。

function OneHundredEightDaysAway() {
var today = new Date();
var dd = today.getDate();
var mm = today.getMonth() + 1; //Jan = 0
var yyyy = today.getFullYear();

var date = new Date(yyyy, mm, dd);
var newdate = new Date(date);
newdate.setDate(newdate.getDate() + 180); //180 days in the future
var nd = new Date(newdate);

var DD = nd.getDate();
var MM = nd.getMonth();
var YYYY = today.getFullYear();

if (DD < 10) {
    DD = '0' + DD
}
if (MM < 10) {
    MM = '0' + MM
}

var maxStart = YYYY + "-" + MM + "-" + DD;

return maxStart;
}

标签: jquery

解决方案


这对我来说工作正常。

var date = new Date();
date.setDate(date.getDate() + 180);
var formatted = date.toLocaleDateString();

var element = document.getElementById('date');
element.textContent = formatted;
<div id="date"></div>


推荐阅读