您好我有需要在过去两周内销售书籍的情况。我正在使用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
我不确定有什么问题请帮忙!!!!!
答案 0 :(得分:1)
您的代码实际上是在进行字符串比较而不是日期比较。这是失败的原因是因为周一M
小于T
,W
和S
,而不是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")
}
编辑:第一次检查日期是否相等也需要修改为仅检查年,月和日期(忽略小时/等)。