• 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));
    }
  • 相关阅读:
    pycharm激活(JetBrains IDEA 系列产品通用xx方法(license server))
    纯css美化下拉框、复选框以及单选框样式并用jquery获取到其被选中的val
    字符串替换
    jquery 倒计时效果
    js 数字前自动补零
    css 常用的绝对定位元素水平垂直居中的方法
    webapp中绝对定位/固定定位与虚拟键盘冲突的问题
    css 兼容各种iPhone
    使用 position:sticky 实现粘性布局
    jquery判断点击鼠标左、中、右键事件
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3507727.html
Copyright © 2020-2023  润新知