使用Javascript以特定格式回滚日期

时间:2014-10-08 18:16:13

标签: javascript

我不确定如何做这个部分,甚至不知道如何把它作为一个问题。我一直致力于我的工作项目,我们有一个开始日期和结束日期,用户通过日期选择器输入或在某些格式要求中输入,然后将查询发送到我们的数据库要求提供信息。页面加载时会自动填充开始日期和结束日期,开始日期将返回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。我试着想出来。

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);
});