由.Net类库提供的农历计算

using  System;  
using  System.Collections.Generic;  
using  System.Text;  
using  System.Globalization;  
/**  
 * 说明:在东亚各国,除了通用的公元纪年之外,还有各自以前使用的阴历纪年法,在.net2.0种增加了针对东亚各国的日历类EastAsianLunisolarCalendar,  
 * 它是一个抽象类,有各种针对不同国家的的子类,其中ChineseLunisolarCalendar就是针对中国的日历类,它提公元纪年与中国传统农历纪年之间的相互转换  
 * 利用它可以计算天干地支等有关农历的信息,本程序就是来简单展示这个类的用法。它能计算的农历范围从公历1901-2-19至2101-1-28。  
 * 作者:周公  
 * 日期:2007-11-21  
 * 最后维护日期:2010-01-05  
 * 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2007/11/21/1896258.aspx  
 */   
namespace  ChineseCalendar  
{  
    public   class  Calendar  
    {  
        private   static  ChineseLunisolarCalendar chineseDate =  new  ChineseLunisolarCalendar();  
        static   void  Main( string [] args)  
        {  
            //ChineseLunisolarCalendar chineseDate = new ChineseLunisolarCalendar();   
            ShowYearInfo();  
            ShowCurrentYearInfo();  
            Console.ReadLine();  
        }  
        /// <summary>   
        /// 展示阴历年份信息   
        /// </summary>   
        public   static   void  ShowYearInfo()  
        {  
            for  ( int  i = chineseDate.MinSupportedDateTime.Year; i < chineseDate.MaxSupportedDateTime.Year; i++)  
            {  
                Console.WriteLine("年份:{0},月份总数:{1},总天数:{2},干支序号:{3}" , i, chineseDate.GetMonthsInYear(i),chineseDate.GetDaysInYear(i)  
                                  ,chineseDate.GetSexagenaryYear(new  DateTime(i,3,1)));  
            }  
        }  
        /// <summary>   
        /// 展示当前年份信息   
        /// </summary>   
        public   static   void  ShowCurrentYearInfo()  
        {  
            int  lYear=chineseDate.GetYear(DateTime.Now);  
            int  lMonth=chineseDate.GetMonth(DateTime.Now);  
            int  lDay=chineseDate.GetDayOfMonth(DateTime.Now);  
              
            /** GetLeapMonth(int year)方法返回一个1到13之间的数字,  
             * 比如:1、该年阴历2月有闰月,则返回3  
             * 如果:2、该年阴历8月有闰月,则返回9  
             * GetMonth(DateTime dateTime)返回是当前月份,忽略是否闰月  
             * 比如:1、该年阴历2月有闰月,2月返回2,闰2月返回3  
             * 如果:2、该年阴历8月有闰月,8月返回8,闰8月返回9  
             */   
            int  leapMonth = chineseDate.GetLeapMonth(lYear); //获取第几个月是闰月,等于0表示本年无闰月   
              
            //如果今年有闰月   
            if  (leapMonth > 0)  
            {  
                //闰月数等于当前月份   
                if  (lMonth == leapMonth)  
                {  
                    Console.WriteLine("今年的阴历日期:{0}年闰{1}月{2}日。" , lYear, lMonth - 1, lDay);  
                }  
                else   if  (lMonth > leapMonth) //   
                {  
                    Console.WriteLine("今年的阴历日期:{0}年{1}月{2}日。" , lYear, lMonth - 1, lDay);  
                }  
                else   
                {  
                    Console.WriteLine("今年的阴历日期:{0}年{1}月{2}日。" , lYear, lMonth, lDay);  
                }  
                  
            }  
            else   
            {  
                Console.WriteLine("今年的阴历日期:{0}年{1}月{2}日。" , lYear, lMonth, lDay);  
            }  
            Console.WriteLine("今天的公历日期:"  + DateTime.Now.ToString( "yyyy-MM-dd" ));  
            Console.WriteLine("今年阴历天数:{0},今年{1}闰年" , chineseDate.GetDaysInYear(DateTime.Now.Year),(chineseDate.IsLeapYear(DateTime.Now.Year)== true )? "是" : "不是" );  
              
            Console.WriteLine("今年农历每月的天数:" ); //注意:如果有13个数字表示当年有闰月   
            for  ( int  i = 1; i <= chineseDate.GetMonthsInYear(DateTime.Now.Year); i++)  
            {  
                Console.Write("{0,-5}" ,chineseDate.GetDaysInMonth(DateTime.Now.Year,i));  
            }  
        }  
    }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值