当前位置:编程学习 > C#/ASP.NET >>

C#农历计算查询(公历与农历之间转换)

net2.0种已经提供了公历与农历之间进行转换功能。下面就以几个简单的例子展示它的用法。

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  
 * 最后维护日期:2009-07-28  
 * 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2007/11/21/1896258.aspx  
 */  
namespace ChineseCalendar   
{   
    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()   
        {   
            /* 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(DateTime.Now.Year);//获取第几个月是闰月,等于0表示本年无闰月   
            int lYear=chineseDate.GetYear(DateTime.Now);   
            int lMonth=chineseDate.GetMonth(DateTime.Now);   
            int lDay=chineseDate.GetDayOfMonth(DateTime.Now);   
            //如果今年有闰月   
            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);   
                }   
               &

补充:软件开发 , C# ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,