如果月份不是当前月份

If month is not current month

本文关键字:如果      更新时间:2023-09-26

我们有一个返回 JSON 的 .NET Web 服务,包括字符串格式的日期,如下所示:2012-04-30T00:00:00+12:00。

在javascript中,我想排除月份不是当前月份的日期。因此,在上述日期下,月份是 04(4 月),当前月份是 5 月(无论如何在新西兰)。所以,我想忽略这条记录,例如,在伪代码中:

if(vMonth == CurrentMonth){
     dothis();
}

我该怎么做?

编辑:请参阅下面的Rob G的答案,了解适用于所有浏览器的解决方案。

var dateOne = new Date("2012-04-30T00:00:00+12:00");​​​
var dateTwo = new Date();
if(dateOne.getMonth() == dateTwo.getMonth()) {
    alert("equal");
}

这是jsfiddle:http://jsfiddle.net/Mq5Tf/

有关日期对象的详细信息:MSDN: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/DateES5: http://es5.github.com/#x15.9.2

var date = new Date();
var currentMonth = date.getMonth();
var yourMonth = 4;
if(yourMonth == currentMonth ){
    /* Do this */
    alert('Hello');
}

不依赖于分析日期字符串的替代方法:

function checkMonth(ds) {
  var now = new Date();
  var m = now.getMonth() + 1;
  return !!ds.match(now.getFullYear() + '-' + (m<10?'0':'') + m);
}
// on 2012-05-01
alert( checkMonth('2012-04-30T00:00:00+12:00') ); // false
alert( checkMonth('2012-05-01T00:00:00+12:00') ); // false

编辑

请注意,仅当时区偏移量应忽略或不重要时,检查月份数字才有效。虽然2012-04-30T00:00:00+12:00是在4月,但2012-04-30T14:00:00+12:00将在当地时间5月1日凌晨2点。

// Means April 30, months are indexes in JS
var input = new Date(2012, 03, 30);​​​
// or use format new date("2012-04-30T00:00:00+12:00") suggested in other answer
var currentDate = new Date();
if(input.getFullYear() == currentDate.getFullYear() // if you care about year
   && input.getMonth() == currentDate.getMonth()) {
    // act accordingly
}