知识大全 c#中国农历时间类

Posted 农历

篇首语:知识的领域是无限的,我们的学习也是无限期的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 c#中国农历时间类相关的知识,希望对你有一定的参考价值。

  原来还准备自己写算法 并研究农历规则 发现那太难和麻烦了 光是农历的推算那就我等专门研究历法的人一下搞懂的 后来发现 NET类库也提供一些基础的农历类System Globalization ChineseLunisolarCalendar 我改装了一下如DateTime时间形式 代码如下 实现了 公历农历转换的功能 但是只能算到 ~ 年之间的 基本够日常使用了 源代码如下     using System;    using System Collections Generic;    using System Text;

  namespace System        /**//// <summary>    /// 中国常用农历日期时间类    ///        /// </summary>    class ChinaDateTime            private int year month dayOfMonth;        private bool isLeap;        public DateTime time;

  /**//// <summary>        /// 获取当前日期的农历年        /// </summary>        public int Year                    get return year;        

  /**//// <summary>        /// 获取当前日期的农历月份        /// </summary>        public int Month                    get return month;        

  /**//// <summary>        /// 获取当前日期的农历月中天数        /// </summary>        public int DayOfMonth                    get return dayOfMonth;        

  /**//// <summary>        /// 获取当前日期是否为闰月中的日期        /// </summary>        public bool IsLeap                    get return isLeap;        

  System Globalization ChineseLunisolarCalendar cc;        /**//// <summary>        /// 返回指定公历日期的阴历时间        /// </summary>        /// <param name= time ></param>        public ChinaDateTime(DateTime time)                    cc = new System Globalization ChineseLunisolarCalendar();                         if (time > cc MaxSupportedDateTime || time < cc MinSupportedDateTime)                throw new Exception( 参数日期时间不在支持的范围内 支持范围 + cc MinSupportedDateTime ToShortDateString()+ 到 +cc MaxSupportedDateTime ToShortDateString());            year = cc GetYear(time);            month = cc GetMonth(time);            dayOfMonth = cc GetDayOfMonth(time);            isLeap = cc IsLeapMonth(year month);            if (isLeap) month = ;            this time = time;

  

        /**//// <summary>        /// 返回当前日前的农历日期         /// </summary>        public static ChinaDateTime Now                    get return new ChinaDateTime(DateTime Now);        

  /**//// <summary>        /// 返回指定农历年 月 日 是否为闰月的农历日期时间        /// </summary>        /// <param name= Year ></param>        /// <param name= Month ></param>        /// <param name= DayOfMonth ></param>        /// <param name= IsLeap ></param>        public ChinaDateTime(int Year int Month int DayOfMonth bool IsLeap)                    if (Year >= cc MaxSupportedDateTime Year || Year <= cc MinSupportedDateTime Year)                throw new Exception( 参数年份时间不在支持的范围内 支持范围 + cc MinSupportedDateTime ToShortDateString() + 到 + cc MaxSupportedDateTime ToShortDateString());

  if (Month < || Month > )                throw new Exception( 月份必须在 ~ 范围 );            cc = new System Globalization ChineseLunisolarCalendar();                        if(cc GetLeapMonth(Year)!=Month&&IsLeap)                throw new Exception( 指定的月份不是当年的闰月 );            if (cc GetDaysInMonth(Year IsLeap ? Month + : Month) < DayOfMonth || DayOfMonth < )                throw new Exception( 指定的月中的天数不在当前月天数有效范围 );            year = Year;            month = Month;            dayOfMonth = DayOfMonth;            isLeap = IsLeap;            time = DateTime Now;       

  /**//// <summary>        /// 获取当前农历日期的公历时间        /// </summary>        public DateTime ToDateTime()                    return cc ToDateTime(year isLeap ? month + : month dayOfMonth time Hour time Minute time Second time Millisecond);       

  /**//// <summary>        /// 获取指定农历时间对应的公历时间        /// </summary>        /// <param name= CnTime ></param>        /// <returns></returns>        public static DateTime ToDateTime(ChinaDateTime CnTime)                    return CnTime ToDateTime();       

  /**//// <summary>        /// 获取指定公历时间转换为农历时间        /// </summary>        /// <param name= Time ></param>        /// <returns></returns>        public static ChinaDateTime ToChinaDateTime(DateTime Time)                    return new ChinaDateTime(Time);       

cha138/Article/program/net/201311/11671

相关参考

知识大全 C#接口和抽象类技术特点浅析

C#接口和抽象类技术特点浅析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一C#抽象类  C#

知识大全 NET Framework2.0中的农历类

NETFramework2.0中的农历类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一简介 

知识大全 c# 类,抽象类 抽象方法 的理解

  本文是学习抽象类的以及抽象类中静态字段静态方法的知识  我写本文前对抽象类的理解  A是为了继承的需要或者是为了多态的需要把具有类似行为的一组概念写成一个抽象类但是抽象类里面不实现任何行为仅仅是定

知识大全 C#汉字转拼音功能类

C#汉字转拼音功能类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  此代码属改造而来没有太深的技

知识大全 C#封装Word常用操作类

C#封装Word常用操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  usingSystem

知识大全 c# Stack操作类

c#Stack操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  Stack类代码  usin

知识大全 C#封装Excel常用操作类

C#封装Excel常用操作类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! usingS

知识大全 C# 对称算法,加密解密类

C#对称算法,加密解密类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  模块编号 &n

知识大全 C#中的HMACSHA1类

C#中的HMACSHA1类  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  //C#中使用HMAC

知识大全 C#中抽象类和接口的区别与使用

C#中抽象类和接口的区别与使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一抽象类  抽象类