zoukankan      html  css  js  c++  java
  • C# 获取农历日期

    //C# 获取农历日期
    
    ///<summary>
    /// 实例化一个 ChineseLunisolarCalendar
    ///</summary>
    private static  ChineseLunisolarCalendar ChineseCalendar =new ChineseLunisolarCalendar();
     
    ///<summary>
    /// 十天干
    ///</summary>
    private static string[] tg = { "", "", "", "", "", "", "", "", "", "" };
     
    ///<summary>
    /// 十二地支
    ///</summary>
    private static string[] dz = { "", "", "", "", "", "", "", "", "", "", "", "" };
     
    ///<summary>
    /// 十二生肖
    ///</summary>
    private static string[] sx = { "", "", "", "", "", "", "", "", "", "", "", "" };
     
    ///<summary>
    /// 返回农历天干地支年
    ///</summary>
    ///<param name="year">农历年</param>
    ///<return s></return s>
    public static string GetLunisolarYear(int year)
    {
        if (year >3)
        {
            int tgIndex = (year -4) %10;
            int dzIndex = (year -4) %12;
             
            return string.Concat(tg[tgIndex], dz[dzIndex], "[", sx[dzIndex], "]");
        }
         
        throw new ArgumentOutOfRangeException("无效的年份!");
    }
     
    ///<summary>
    /// 农历月
    ///</summary>
     
    ///<return s></return s>
    private static string[] months = { "", "", "", "", "", "", "", "", "", "", "十一", "十二(腊)" };
     
    ///<summary>
    /// 农历日
    ///</summary>
    private static string[] days1 = { "", "", "廿", "" };
    ///<summary>
    /// 农历日
    ///</summary>
    private static string[] days = { "", "", "", "", "", "", "", "", "", "" };
     
     
    ///<summary>
    /// 返回农历月
    ///</summary>
    ///<param name="month">月份</param>
    ///<return s></return s>
    public static string GetLunisolarMonth(int month)
    {
        if (month <13 && month >0)
        {
            return  months[month -1];
        }
         
        throw  new ArgumentOutOfRangeException("无效的月份!");
    }
     
    ///<summary>
    /// 返回农历日
    ///</summary>
    ///<param name="day"></param>
    ///<return s></return s>
    public static string GetLunisolarDay(int day)
    {
        if (day >0 && day <32)
        {
            if (day !=20 && day !=30)
            {
                return string.Concat(days1[(day -1) /10], days[(day -1) %10]);
            }
            else
            {
                return string.Concat(days[(day -1) /10], days1[1]);
             }
        }
         
        throw new ArgumentOutOfRangeException("无效的日!");
    }
     
     
     
    ///<summary>
    /// 根据公历获取农历日期
    ///</summary>
    ///<param name="datetime">公历日期</param>
    ///<return s></return s>
    public static string GetChineseDateTime(DateTime datetime)
    {
        int year = ChineseCalendar.GetYear(datetime);
        int month = ChineseCalendar.GetMonth(datetime);
        int day = ChineseCalendar.GetDayOfMonth(datetime);
        //获取闰月, 0 则表示没有闰月
        int leapMonth = ChineseCalendar.GetLeapMonth(year);
         
        bool isleap =false;
         
        if (leapMonth >0)
        {
            if (leapMonth == month)
            {
            //闰月
                isleap =true;
                month--;
            }
            else if (month > leapMonth)
            {
                 month--;
            }
        }
         
        return string.Concat(GetLunisolarYear(year), "", isleap ?"" : string.Empty, GetLunisolarMonth(month), "", GetLunisolarDay(day));
    }
  • 相关阅读:
    idea常用快捷键及操作
    Ubuntu 装nexus
    ubuntu安装gitlab
    ubuntu安装jdk,maven,tomcat
    ubuntu安装gitlab-ci-runner、注册
    ubuntu开启远程shell,开启上传下载
    Ubuntu安装软件提示boot空间不足
    POJ3461 KMP简单变形输出模式串在主串出现的次数
    涨姿势stl map['a']['a']=b;
    对链表的操作(数据结构线性表算法设计练习)
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3507727.html
Copyright © 2011-2022 走看看