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
* 最后维护日期:2010-01-05
* 首发地址:http://blog.csdn.net/zhoufoxcn/archive/2007/11/21/1896258.aspx
*/
namespace ChineseCalendar
{
public 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()
{
int lYear=chineseDate.GetYear(DateTime.Now);
int lMonth=chineseDate.GetMonth(DateTime.Now);
int lDay=chineseDate.GetDayOfMonth(DateTime.Now);
/** 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(lYear);//获取第几个月是闰月,等于0表示本年无闰月
//如果今年有闰月
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);
}
}
else
{
Console.WriteLine("今年的阴历日期:{0}年{1}月{2}日。", lYear, lMonth, lDay);
}
Console.WriteLine("今天的公历日期:" + DateTime.Now.ToString("yyyy-MM-dd"));
Console.WriteLine("今年阴历天数:{0},今年{1}闰年", chineseDate.GetDaysInYear(DateTime.Now.Year),(chineseDate.IsLeapYear(DateTime.Now.Year)==true)?"是":"不是");
Console.WriteLine("今年农历每月的天数:");//注意:如果有13个数字表示当年有闰月
for (int i = 1; i <= chineseDate.GetMonthsInYear(DateTime.Now.Year); i++)
{
Console.Write("{0,-5}",chineseDate.GetDaysInMonth(DateTime.Now.Year,i));
}
}
}
}
分享到:
相关推荐
C#阳历农历日历类 农历属性 农历年 农历月份 农历天 农历年(支干) 农历月份(字符) 农历天(字符) 农历属象 二十四节气 阴历节日 阳历节日 公历转农历 传回农历y年的总天数 传回农历y年闰月的天数 传回农历y年闰哪个月...
实现简单的日期显示 界面不是很好 并能显示农历日期
主要介绍了C#实现农历日历的方法,详细分析了使用C#实现农历日历的完整步骤,具有一定参考借鉴价值,需要的朋友可以参考下
c# 日历、日期操作类 公历农历转换等 节气节日对应 等操作
老师让做的日历代码。包括农历。很好很容易看明白。注释非常的详细哦。。别错过。值得拥有。。
c# winform桌面日历 带农历 带任务栏图标
主要介绍了C#实现功能强大的中国农历日历操作类,实例分析了C#操作时间及字符串的技巧,非常具有实用价值,需要的朋友可以参考下
C#日历控件包含农历标签可以复选,组件及源码,无卡顿
C#日历控件,C#农历控件源码,C#仿QQ日历控件源码 自定义控件,直接拖入界面即可使用. 提供的是源码,所以资源分稍微高一点.
利用C#编写的一个小日历,能够显示当前的天干地支,十二生肖,显示当天的农历日期和当前时间
可以把日期转换为农历日期、节气。 挺好用的日历工具。
中国农历类1900.1.31日起至 2049.12.31日止的数据,本程序使用数据来源于网上的万年历查询,增加了干支纪年法。
内有农历的核心算法 公历的显示 八字的计算 每日太阳升降情况介绍 回历的显示 每月的月亮情况介绍
准确的阳历、农历、日期,天干地支、节日。
可以最小化到任务栏系统托盘,可以查询农历。主要是为了学习最小化到系统托盘做的这个。
前段时间想找个农历的控件,找了一圈还是决定自己写,现小有成果,不敢独享。.net农历控件,可自定义颜色,可变大小,随拖随用,含源代码。
日历(中国农历)类,包括每天的节日等标识,如 10.1~10.7国庆节.
自己做的C#中日历转换类,需要时请根据自己情况更改