我不确定如何做这个部分,甚至不知道如何把它作为一个问题。我一直致力于我的工作项目,我们有一个开始日期和结束日期,用户通过日期选择器输入或在某些格式要求中输入,然后将查询发送到我们的数据库要求提供信息。页面加载时会自动填充开始日期和结束日期,开始日期将返回14天,以便为用户提供两周的自动信息,除非他们想要获得更多/更少。这就是问题所在:
1:两个输入框(当然是html)都在工作,直到我们打到10月,因为它是2个月的月份。 2:回滚日期-14给出一个负数而不是将日期回滚到九月二十日。
我尝试过var StartDay = StartDate.setDate(StartDate.getDate() - 14);并且所有给出的是SQL无法识别的日期和时间。所以我试图弄清楚如何:
1:让它回滚到正确的日期,然后我可以用或填充框 2:重新格式化为yyyy-mm-dd格式的日期时间
到目前为止,我花了一整天时间寻找答案,而且我发现了多个接近但不完全是我正在寻找的答案。
$(function () {
$("#StartDate").datepicker({ dateFormat: "yy-mm-dd", changeMonth: true });
$("#EndDate").datepicker({ dateFormat: "yy-mm-dd", changeMonth: true });
var StartDate = new Date();
var StartDay = StartDate.setDate(StartDate.getDate() - 14);
var StartMonth = StartDate.getMonth() + 1;
var StartYear = StartDate.getFullYear();
//if (StartMonth < 10) StartMonth = "0" + Month;
//if (StartDay < 10) StartDay = "0" + StartDay;
var StartDateBox = StartDate;
var EndDate = new Date();
var EndDay = EndDate.getDate();
var EndMonth = EndDate.getMonth() + 1;
var EndYear = EndDate.getFullYear();
//alert('the new date is ' + EndDay);
if (EndMonth < 10) EndMonth = "0" + Month;
if (EndDay < 10) EndDay = "0" + EndDay;
var EndDateBox = EndYear + "-" + EndMonth + "-" + EndDay;
$("#StartDate").attr("value", StartDateBox);
$("#EndDate").attr("value", EndDateBox);
});
一切都标榜了#34;结束&#34;工作良好。这是我遇到问题的14天回滚。我有&#34;如果&#34;注释掉,因为数字是负数,因此崩溃了函数。
*编辑太棒了!非常感谢,现在我看到它,它更有意义。但是,它设置为8月,因此它在.getMonth之后缺少+1。我试着想出来。
答案 0 :(得分:0)
我会创建一个格式化日期的函数,以重用该代码。
function formatDate(date) {
var day = date.getDate();
var month = date.getMonth() + 1;
var year = date.getFullYear();
if (month < 10) month = "0" + month;
if (day < 10) day = "0" + day;
return year + "-" + month + "-" + day;
};
$(function () {
$("#StartDate").datepicker({ dateFormat: "yy-mm-dd", changeMonth: true });
$("#EndDate").datepicker({ dateFormat: "yy-mm-dd", changeMonth: true });
var StartDate = new Date();
StartDate.setDate(StartDate.getDate() - 14);
var StartDateBox = formatDate(StartDate);
var EndDate = new Date();
var EndDateBox = formatDate(EndDate);
$("#StartDate").attr("value", StartDateBox);
$("#EndDate").attr("value", EndDateBox);
});