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));
    }
  • 相关阅读:
    java8新特性学习五(接口中的默认方法与静态方法)
    java8新特性学习四(Optional类)
    [record]WebLogic域之创建-文本界面
    [转]java 关于httpclient 请求https (如何绕过证书验证)
    数组与串,串的实现,KMP,BF算法
    git
    nginx设置重写规则
    深入PHP 第三章笔记
    进程和线程
    JS 获取 iframe内元素,及iframe与html调用
  • 原文地址:https://www.cnblogs.com/bluestorm/p/3507727.html
Copyright © 2011-2022 走看看