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


             由.Net类库提供的农历计算(C#农历)                 2007-11-21 12:47:00    

                原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://zhoufoxcn.blog.51cto.com/792419/163928            

       

    中国毕竟是一个文明大国,有一些自己悠久的历史文化传统,农历就是其中之一,它对指导农业生产有着极为重要的意义,还有春节等一些传节日并没有因为使用公 元纪年而消失,在程序开发种我们也经常会遇到一些需要在公历与农历之间进行 转换,在1.1之前大家都是采用了第三方的算法(我也采用过),现 在在.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
    */
    namespace ChineseCalendar
    {     
         class Program     
      {        
           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()       
      {             
             Console.WriteLine("今年的阴历时间:{0}年{1}月{2}日。", chineseDate.GetYear(DateTime.Now),chineseDate.GetMonth(DateTime.Now),chineseDate.GetDayOfMonth(DateTime.Now));           
             Console.WriteLine("今年阴历天数:{0},今年{1}闰年", chineseDate.GetDaysInYear(DateTime.Now.Year),(chineseDate.IsLeapYear(DateTime.Now.Year)==true)?"":"不是");             
             Console.WriteLine("今年农历每月的天数:");             
             for (int i = 1; i <= chineseDate.GetMonthsInYear(DateTime.Now.Year); i++)            
          {               
               Console.Write("{0,-5}",chineseDate.GetDaysInMonth(DateTime.Now.Year,i));           
          }         
      }    
     }
    }
    运行效果:

    本文出自 “周公(周金桥)的专栏” 博客,请务必保留此出处http://zhoufoxcn.blog.51cto.com/792419/163928

  • 相关阅读:
    css3圆角细节
    css3伪元素
    使用vscode在谷歌上运行代码
    SpringCloud-技术专区-Gateway优雅的处理Filter抛出的异常
    SpringCloud-技术专区-Gateway全局通用异常处理
    Mybatis-技术专区-插件开发指南
    消息中间件-技术专区-RabbitMQ基本介绍
    SpringBoot-技术专区-自定义TaskExecutor线程池
    MySQL-技术专区-Binlog和Redolog的介绍
    SpringBoot-技术专区-Redis同数据源动态切换db
  • 原文地址:https://www.cnblogs.com/tsyr/p/4754299.html
Copyright © 2020-2023  润新知