知识大全 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#接口和抽象类技术特点浅析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一C#抽象类 C#
NETFramework2.0中的农历类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一简介
本文是学习抽象类的以及抽象类中静态字段静态方法的知识 我写本文前对抽象类的理解 A是为了继承的需要或者是为了多态的需要把具有类似行为的一组概念写成一个抽象类但是抽象类里面不实现任何行为仅仅是定
C#汉字转拼音功能类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 此代码属改造而来没有太深的技
C#封装Word常用操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! usingSystem
c#Stack操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Stack类代码 usin
C#封装Excel常用操作类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! usingS
C#对称算法,加密解密类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 模块编号 &n
C#中的HMACSHA1类 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! //C#中使用HMAC
C#中抽象类和接口的区别与使用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一抽象类 抽象类