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));
    }
  • 相关阅读:
    地址栏传值 JS取值方法
    定位导航 制作
    验证码
    图片水印
    AJAX 三级联动
    javascript 和Jquery 互转
    Jquery 事件 DOM操作
    Jquery 基础
    软件工程中的形式化方法读后感
    软件工程理论、方法与实践 需求工程读后感
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3507727.html
Copyright © 2011-2022 走看看