废话少说只就上Code:
说明:getDay()方法获取星期(这里的星期是从0到6)。参见:http://www.w3school.com.cn/js/js_obj_date.asp 中的getDay().
代码有不足之处希望得到指正。
var SecondFriday = { getSecondFriday: function () { var flag = 0; //(1) 获取当月月初时间,时间格式为:Sun Jun 01 2014 00:00:00 GMT+0800 (中国标准时间) var thisDate = new Date(new Date().getFullYear(), new Date().getMonth()); for (var i = 0; i < 15; i++) { //(2) 因为是每个月的第二个星期五,所以循环15次以内就可以 wd = thisDate.getDay();//(3)判定当月月初是星期几 if(wd===0){//(4)特殊处理星期天。 因为星期天为‘0’。 console.log('here'); return thisDate.getFullYear() + "-" + (thisDate.getMonth() + 1) + "-" +"13" } if ((i + wd) % 5 == 0) { flag = flag + 1;//(5)标示符,确定是第二个星期五 if (flag == 2) { return thisDate.getFullYear() + "-" + (thisDate.getMonth() + 1) + "-" + (i + wd) } } } } };
//Chrom 测试
console.log(SecondFriday.getSecondFriday());
@背塔者 ,提供的简洁代码:
版本一:
function getSecondFriday() { var now = new Date(); var first = new Date(now.getFullYear(), now.getMonth(), 1); now.setDate((5 - first.getDay()) + 7 + 1); // 星期五-第一天的的星期几+1天+7天 return now; }
版本二:
// 星期五-第一天的的星期几+1天+7天,星期六特殊处理了下 function getSecondFriday() { var now = new Date(); var first = new Date(now.getFullYear(), now.getMonth(), 1); now.setDate((5 - (first.getDay() > 5? -1: first.getDay())) + 7 + 1); return now; }
holine 总结:
function secondFriday(date){ date = new Date(date); date.setDate(1); date.setDate((12 - date.getDay()) % 7 + 8); return date; }