根据年份,查找每年五月的第二个星期日

时间:2014-02-02 18:10:28

标签: javascript date

        var myDate = new Date();
        myDate.setFullYear(year);
        myDate.setMonth(4);
        myDate.setDate(1);

if (myDate.getDay() == 0) {
    myDate.setDate(myDate.getDate()+7);
}
else {
    var daysUntilFirstSunday =  myDate.getDay() % 7;
    var firstSunday = myDate.setDate(myDate.getDate() + daysUntilFirstSunday);
    var secondSunday = myDate.setDate(myDate.getDate() + 7);
}

试图查明我的if else语句有什么问题,因为日期已经关闭

2 个答案:

答案 0 :(得分:4)

这样的东西?

function getMothersDay (year) {
    var date = new Date(year, 4, 7);
    date.setDate(7 + (7 - date.getDay()));
    return date;
}

经过全面测试,效果非常好。它比这里的大多数替代方案更快,因为它只生成一个Date实例并重新使用它。 JSFiddle

答案 1 :(得分:0)

这就是诀窍:

function getMotherDayDate(year) {
    var start = new Date(year, 4, 7),
        secondSunday = 7 + (7 - start.getDay());
    return new Date(year, 4, secondSunday); 
}

A live demo at jsFiddle


修改

要回答您修改过的问题:您只是将7 + myDate.getDay()添加到myDate的当前日期,因为myDate.getDay() % 7中的remainder operator只返回myDate.getDay()何时myDate.getDay() < 7

请随意使用上面的代码段。您可以在this jsFiddle查看更多的妈妈节日期。