我们有一个 .NET Web 服务,它返回 JSON,包括如下字符串格式的日期:2012-04-30T00:00:00+12:00。
在javascript中,我想排除月份不是当前月份的日期。因此,对于上述日期,月份是 04(四月),当前月份是五月(无论如何在新西兰)。所以,我想忽略这条记录,例如,在伪代码中:
if(vMonth == CurrentMonth){
dothis();
}
我怎样才能做到这一点?
我们有一个 .NET Web 服务,它返回 JSON,包括如下字符串格式的日期:2012-04-30T00:00:00+12:00。
在javascript中,我想排除月份不是当前月份的日期。因此,对于上述日期,月份是 04(四月),当前月份是五月(无论如何在新西兰)。所以,我想忽略这条记录,例如,在伪代码中:
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/Date ES5: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
}