如何在一个月内检查两个日期?

时间:2018-01-01 21:26:54

标签: javascript date

如何在当月的两个日期之间进行检查?

例如,我想在1月1日和1月8日之间检查,不管是哪一年(我是英国人,所以我的日期是(年/月/日):

var date = new Date(); //This is the current date

date1 = new Date('01, 01, date.getFullYear()');
date2 = new Date('08, 01, date.getFullYear()');

if(date >= date1 && date <= date2) {
// Do Something
} else {
// Don't do something
}

或者另一个例子,让我们说万圣节:

var date = new Date();

date1 = new Date('31, date.getMonth(), date.getFullYear()');

if(date == date1) {
// Do Something
} else {
// Don't do something
}

我不太确定如何在Javascript中对其进行格式化,我们将非常感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

您正在错误地初始化Date个对象。如果要使用字符串初始化日期,则该字符串需要具有可由Date.parse处理的格式。

但是,您传递的字符串看起来实际上根本不想传递任何字符串。所以只省略单引号,如下:

var date1 = new Date(date.getFullYear(), 0, 1);

请注意,第一个参数是年份,第二个参数是月份(从零开始,因此0表示1月),第三个参数是月份的日期。

答案 1 :(得分:1)

几点......

    无论您的本地设置如何,
  • new Date参数都是(年,月,日)。
  • 参数周围的单引号不是正确的语法。
  • JavaScript中的月份为零索引,因此1月为零。

因此,date2应为date2 = new Date(date.getFullYear(), 0, 8)

还养成将var放在变量声明前面的习惯。不要担心为什么呢;你去的时候就会了解这一点。

所以你的代码应该是这样的:

var date = new Date();

var date1 = new Date(date.getFullYear(), 0, 1);
var date2 = new Date(date.getFullYear(), 0, 8);

if(date >= date1 && date <= date2) {
    // this part was correct :)
    //Do Something
}