zoukankan      html  css  js  c++  java
  • ChineseLunisolarCalendar 农历日期

             #region 农历日期
             
             
    
             static ChineseLunisolarCalendar cCalendar = new ChineseLunisolarCalendar();
    
    
             /// <summary>
             /// 返回生肖
             /// </summary>
             /// <param name="datetime">公历日期</param>
             /// <returns></returns>
             public static string GetShengXiao(DateTime datetime)
             {
                 return shengxiao[cCalendar.GetTerrestrialBranch(cCalendar.GetSexagenaryYear(datetime)) - 1];
             }
    
            /// <summary>
            /// 根据公历获取农历日期
            /// </summary>
            /// <param name="datetime">公历日期</param>
            /// <returns></returns>
            public static string GetChineseDateTime(DateTime datetime)
            {
                int lyear = cCalendar.GetYear(datetime);
                int lmonth = cCalendar.GetMonth(datetime);
                int lday = cCalendar.GetDayOfMonth(datetime);
    
                //获取闰月, 0 则表示没有闰月
                int leapMonth = cCalendar.GetLeapMonth(lyear);
    
                bool isleap = false;
    
                if (leapMonth > 0)
                {
                    if (leapMonth == lmonth)
                    {
                        //闰月
                        isleap = true;
                        lmonth--;
                    }
                    else if (lmonth > leapMonth)
                    {
                        lmonth--;
                    }
                }
    
                return string.Concat(GetLunisolarYear(lyear), "年", isleap ? "闰" : string.Empty, GetLunisolarMonth(lmonth), "月", GetLunisolarDay(lday));
            }
    
    
            #region 农历年
    
            /// <summary>
            /// 十天干
            /// </summary>
            private static string[] tiangan = { "甲", "乙", "丙", "丁", "戊", "己", "庚", "辛", "壬", "癸" };
    
            /// <summary>
            /// 十二地支
            /// </summary>
            private static string[] dizhi = { "子", "丑", "寅", "卯", "辰", "巳", "午", "未", "申", "酉", "戌", "亥" };
    
            /// <summary>
            /// 十二生肖
            /// </summary>
            private static string[] shengxiao = { "鼠", "牛", "虎", "免", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪" };
    
    
            /// <summary>
            /// 返回农历天干地支年 
            /// </summary>
            /// <param name="year">农历年</param>
            /// <returns></returns>
            public static string GetLunisolarYear(int year)
            {
                if (year > 3)
                {
                    int tgIndex = (year - 4) % 10;
                    int dzIndex = (year - 4) % 12;
    
                    return string.Concat(tiangan[tgIndex], dizhi[dzIndex], "[", shengxiao[dzIndex], "]");
    
                }
    
                throw new ArgumentOutOfRangeException("无效的年份!");
            }
    
    
            #endregion
    
    
            #region 农历月
    
            /// <summary>
            /// 农历月
            /// </summary>
            private static string[] months = { "正", "二", "三", "四", "五", "六", "七", "八", "九", "十", "冬", "腊" };
    
    
            /// <summary>
            /// 返回农历月
            /// </summary>
            /// <param name="month">月份</param>
            /// <returns></returns>
            public static string GetLunisolarMonth(int month)
            {
                if (month < 13 && month > 0)
                {
                    return months[month - 1];
                }
    
                throw new ArgumentOutOfRangeException("无效的月份!");
            }
    
    
            #endregion
    
    
            #region 农历日
    
            /// <summary>
            /// 
            /// </summary>
            private static string[] days1 = { "初", "十", "廿", "三" };
    
            /// <summary>
            /// 日
            /// </summary>
            private static string[] days = { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };
    
    
            /// <summary>
            /// 返回农历日
            /// </summary>
            /// <param name="day"></param>
            /// <returns></returns>
            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("无效的日!");
            }
    
            #endregion
    
             #endregion
    

      


            

  • 相关阅读:
    软件设计——继承、多态、绑定、重置、创建型设计模式、结构型设计模式和行为设计模式
    软件设计——2017年下半年选择题重要知识点
    day---06 文件的操作
    day---05 基本数据类型(下)
    day---04 基本数据类型(上)
    day---04 流程控制
    day---03 基础的数据类型
    day---02 编程语言的发展史
    day---01 计算机基础
    Day——07
  • 原文地址:https://www.cnblogs.com/ainidewen/p/10233081.html
Copyright © 2011-2022 走看看