程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#農歷計算查詢(公歷與農歷之間轉換)

C#農歷計算查詢(公歷與農歷之間轉換)

編輯: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);   
                }   
               &

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved