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
    

      


            

  • 相关阅读:
    visual studio web开发调试禁用firefox缓存
    JSON C# Class Generator 由json字符串生成C#实体类的工具
    利用HttpHandler和Jquery进行数据库增改删查操作
    机器学习算法相关的开源架构介绍
    jquery validation plugin 中取消对指定按钮的有效性验证!
    Win7下附加sql2005数据库失败 错误代码5120的解决方法
    短地址服务goo.gl, bit.ly,x.co之间性能比较
    win7+iis7.5+asp.net下 CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files 解决方案
    如何解决 The name ControlID does not exist in the current context 错误!
    mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource 错误的解决办法
  • 原文地址:https://www.cnblogs.com/ainidewen/p/10233081.html
Copyright © 2011-2022 走看看