function getStar(month,date)
{
if((date+"").length!=2)
date = "0"+date;
var star = {
"白羊座":[321,420],
"金牛座":[421,520],
"双子座":[521,621],
"巨蟹座":[622,722],
"狮子座":[723,822],
"处女座":[823,922],
"天秤座":[923,1022],
"天蝎座":[1023,1121],
"射手座":[1122,1221],
"摩羯座":[1222,1319],//特殊处理
"水瓶座":[120,219],
"双鱼座":[220,320]
}
var tmp = parseInt(""+month+date,10);
if(tmp<119)//对摩羯座进行特殊处理
tmp = parseInt("13"+date,10);
for( var s in star )
{
if(tmp>star[s][0]&&tmp<star[s][1])
{
return s;
}
}
}
alert(getStar(3,24));
alert(getStar(12,25));
具体日期匆匆抄来的,你比对一下好了
对摩羯座进行了特殊处理,因为他的时间段是12月到1月,就把那个1月当成13月来处理了,比较方便

解决方案 »

  1.   

    呃,写错了一个条件,应该是tmp<120function getStar(month,date)
    {
        if((date+"").length!=2)
            date = "0"+date;
        var star = {
            "白羊座":[321,420],
            "金牛座":[421,520],
            "双子座":[521,621],
            "巨蟹座":[622,722],
            "狮子座":[723,822],
            "处女座":[823,922],
            "天秤座":[923,1022],
            "天蝎座":[1023,1121],
            "射手座":[1122,1221],
            "摩羯座":[1222,1319],//特殊处理
             "水瓶座":[120,219],
            "双鱼座":[220,320]
        }
        var tmp = parseInt(""+month+date,10);
        if(tmp<119)//对摩羯座进行特殊处理
            tmp = parseInt("13"+date,10);
        for( var s in star )
        {
            if(tmp>star[s][0]&&tmp<star[s][1])
            {
                return s;
            }
        }
    }
    alert(getStar(3,24));
    alert(getStar(12,25));
      

  2.   

    ……按太快了,居然又没改
    function getStar(month,date)
    {
        if((date+"").length!=2)
            date = "0"+date;
        var star = {
            "白羊座":[321,420],
            "金牛座":[421,520],
            "双子座":[521,621],
            "巨蟹座":[622,722],
            "狮子座":[723,822],
            "处女座":[823,922],
            "天秤座":[923,1022],
            "天蝎座":[1023,1121],
            "射手座":[1122,1221],
            "摩羯座":[1222,1319],//特殊处理
            "水瓶座":[120,219],
            "双鱼座":[220,320]
        }
        var tmp = parseInt(""+month+date,10);
        if(tmp<120)//对摩羯座进行特殊处理,囧
            tmp = parseInt("13"+date,10);
        for( var s in star )
        {
            if(tmp>star[s][0]&&tmp<star[s][1])
            {
                return s;
            }
        }
    }
    alert(getStar(3,24));
    alert(getStar(12,25));
      

  3.   

    //取生肖, 参数必须是四位的年
    function getBirth(year){
      var arr=['猴','鸡','狗','猪','鼠','牛','虎','兔','龙','蛇','马','羊'];
      return /^\d{4}$/.test(year)?arr[year%12]:null
    }// 取星座, 参数分别是 月份和日期
    /*
    魔羯座(12/22 - 1/19)、水瓶座(1/20 - 2/18)、双鱼座(2/19 - 3/20)、牡羊座(3/21 - 4/20)、金牛座(4/21 - 5/20)、
    双子座(5/21 - 6/21)、巨蟹座(6/22 - 7/22)、狮子座(7/23 - 8/22)、处女座(8/23 - 9/22)、天秤座(9/23 - 10/22)、
    天蝎座(10/23 - 11/21)、射手座(11/22 - 12/21)
    */
    function getConstellation(month,day){
    var s="魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯"; var arr=[19,50,84,116,148,181,214,246,278,310,341,373,383];
    for(var i=0;i<arr.length;i++){
    if ((((month-1)<<5)+day) <= arr[i]) return s.substr(i*2,2);
    }
    return "error";
    }
      

  4.   


    好漂亮的算法,学习,以前我一起以为JS没有位运算。function getConstellation(month,day){
        var s="魔羯水瓶双鱼牡羊金牛双子巨蟹狮子处女天秤天蝎射手魔羯";
        var arr=[119,218,320,420,520,621,722,822,922,1022,1121,1221,1231];//我觉得这样更好理解一点儿……
        var tmp = month*100+day;
        for(var i=0;i<arr.length;i++)
        {
            if (tmp <= arr[i]) 
             return s.substr(i*2,2);
        }
        return "error";
    }