无法比较星期五的日期JavaScript

时间:2015-09-05 09:01:34

标签: javascript

您好我有需要在过去两周内销售书籍的情况。我正在使用Javascript。一切都很好,直到今天。当星期五是星期五比较失败。以下是示例。

   //Function to get Monday of thisweek,last week and last to last week.
       function GetMonday(mday) {
         var today, todayNumber, mondayNumber, monday;
         today = new Date();
         todayNumber = today.getDay();
         mondayNumber = mday - todayNumber;
         return new Date(today.getFullYear(), today.getMonth(), today.getDate() + mondayNumber).toDateString();
}


  var currDate = new Date().toDateString(); // gets todays date
  var currwkDate = GetMonday(1); //Gets this week Monday's Date
  var lastwkDate = GetMonday(-6); //Gets last week Monday's Date
  var twowkDate = GetMonday(-13); //Gets Last to last week Monday's Date

  var BillDate=new Date("09/04/2015").toDateString(); // Friday (04 Sep)
          if (currDate == BillDate) {
                 alert("equal");
            }
            if (BillDate > currwkDate) {
                alert("this week");
            }
            if (BillDate > lastwkDate) {
                alert("last week");
            }
            if (BillDate > twowkDate) {
               alert("two week")
            }

理想情况下,上面的代码应该有三个警告框(本周,上周,两周),但它不会发出单一警报。

如果我编辑上面的代码并将BillDate放到任何其他不是星期五的日期,相同的代码就可以正常工作

   var BillDate= new Date("09/03/2015").toDateString(); //Thursday 03-Sep

我不确定有什么问题请帮忙!!!!!

1 个答案:

答案 0 :(得分:1)

您的代码实际上是在进行字符串比较而不是日期比较。这是失败的原因是因为周一M小于TWS,而不是F

这使得BillDate > currwkDate 为假,如果它是星期五。自F < M起。修复方法是比较日期(删除toDateString的使用):

   //Function to get Monday of thisweek,last week and last to last week.
       function GetMonday(mday) {
         var today, todayNumber, mondayNumber, monday;
         today = new Date();
         todayNumber = today.getDay();
         mondayNumber = mday - todayNumber;
         return new Date(today.getFullYear(), today.getMonth(), today.getDate() + mondayNumber);
}


  var currDate = new Date(); // gets todays date
  var currwkDate = GetMonday(1); //Gets this week Monday's Date
  var lastwkDate = GetMonday(-6); //Gets last week Monday's Date
  var twowkDate = GetMonday(-13); //Gets Last to last week Monday's Date

  var BillDate=new Date("09/04/2015"); // Friday (04 Sep)
          if (currDate.getYear() == BillDate.getYear() && currDate.getMonth() == BillDate.getMonth() && currDate.getDate() == BillDate.getDate()) {
                 alert("equal");
            }
            if (BillDate > currwkDate) {
                alert("this week");
            }
            if (BillDate > lastwkDate) {
                alert("last week");
            }
            if (BillDate > twowkDate) {
               alert("two week")
            }

编辑:第一次检查日期是否相等也需要修改为仅检查年,月和日期(忽略小时/等)。