根据太阳和月亮的天经来计算阴历月

问题描述 投票:-1回答:1

我想从太阳和月亮的天经度的角度(360度)计算出阴历月的名称。

我有此代码,但是有很多问题!

public static string ISLAMIC_MONTH(double SUN_ECLIPTIC_LONGITUDE, double MOON_ECLIPTIC_LONGITUDE)
    {
        if (SUN_ECLIPTIC_LONGITUDE >= 0 && MOON_ECLIPTIC_LONGITUDE >= 0)
        {
            return "Shaaban";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 30 && MOON_ECLIPTIC_LONGITUDE >= 30)
        {
                return "Ramadan";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 60 && MOON_ECLIPTIC_LONGITUDE >= 60)
        {
                return "Shawwal";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 90 && MOON_ECLIPTIC_LONGITUDE >= 90)
        {
                return "Dhu al-Qidah";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 120 && MOON_ECLIPTIC_LONGITUDE >= 120)
        {
                return "Dhu al-Hijjah";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 150 && MOON_ECLIPTIC_LONGITUDE >= 150)
        {
                return "Muharram";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 180 && MOON_ECLIPTIC_LONGITUDE >= 180)
        {
                return "Safar";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 210 && MOON_ECLIPTIC_LONGITUDE >= 210)
        {
                return "Rabi I";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 240 && MOON_ECLIPTIC_LONGITUDE >= 240)
        {
                return "Rabi II";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 270 && MOON_ECLIPTIC_LONGITUDE >= 270)
        {
                return "Jumada I";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 300 && MOON_ECLIPTIC_LONGITUDE >= 300)
        {
                return "Jumada II";
        }
        if (SUN_ECLIPTIC_LONGITUDE >= 330 && MOON_ECLIPTIC_LONGITUDE >= 330)
        {
                return "Rajab";
        }
        return "";
    }

将操作结果重复一个月而不知道所有月份。

我需要帮助...

c# astronomy
1个回答
0
投票

您当前的方法等效于仅编写此方法,这显然不是您想要的:

if (SUN_ECLIPTIC_LONGITUDE >= 0 && MOON_ECLIPTIC_LONGITUDE >= 0)
{
    return "Shaaban";
}
return "";

之所以这样,是因为任何> = 0的值都匹配,所以所有正值都匹配。

您应该颠倒条件的顺序,以便最小的不首先匹配。我还建议您使用else if来明确您对将来的维护者所做的事情。

public static string ISLAMIC_MONTH(double SUN_ECLIPTIC_LONGITUDE, double MOON_ECLIPTIC_LONGITUDE)
{
    if (SUN_ECLIPTIC_LONGITUDE >= 330 && MOON_ECLIPTIC_LONGITUDE >= 330)
    {
            return "Rajab";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 300 && MOON_ECLIPTIC_LONGITUDE >= 300)
    {
            return "Jumada II";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 270 && MOON_ECLIPTIC_LONGITUDE >= 270)
    {
            return "Jumada I";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 240 && MOON_ECLIPTIC_LONGITUDE >= 240)
    {
            return "Rabi II";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 210 && MOON_ECLIPTIC_LONGITUDE >= 210)
    {
            return "Rabi I";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 180 && MOON_ECLIPTIC_LONGITUDE >= 180)
    {
            return "Safar";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 150 && MOON_ECLIPTIC_LONGITUDE >= 150)
    {
            return "Muharram";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 120 && MOON_ECLIPTIC_LONGITUDE >= 120)
    {
            return "Dhu al-Hijjah";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 90 && MOON_ECLIPTIC_LONGITUDE >= 90)
    {
            return "Dhu al-Qidah";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 60 && MOON_ECLIPTIC_LONGITUDE >= 60)
    {
            return "Shawwal";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 30 && MOON_ECLIPTIC_LONGITUDE >= 30)
    {
            return "Ramadan";
    }
    else if (SUN_ECLIPTIC_LONGITUDE >= 0 && MOON_ECLIPTIC_LONGITUDE >= 0)
    {
        return "Shaaban";
    }
    return "";
}
© www.soinside.com 2019 - 2024. All rights reserved.