
属性 BookOfChange: Boolean;
属性 BookOfChange 属性为 True 时,干支历以节气为基准。
中国的八字批命中的四柱中使用的干支是以节气为基准划分年、月、日,和农历年的月有一些区别。如果你查农历的目的为了得到四柱干支,可以将这个属性设置为 True。以每年的立春为农历新的一年开始,以24个节气中的12个节气为月的第一天。
BookOfChange 属性为 False,干支历以农历的年、月为基准,这和国家公布的农历相同。
属性: Constellation: String;
Constellation 为只读属性,返回当日的星座。
属性 Date: TDate;
公历的年、月、日。
属性Feast: String;
返回当日的阳历节日,当一天有多过一个的节日时,用空格分开。
注:节日多以中国节日和世界节日为准,其中感恩节有两个,一个是美国的习俗在11月,一个是加拿大的习俗在10月。
属性:ISO8601: Boolean;
ISO8601 属性为 True 时,Week 属性的星期排列以星期一为每周的第一天。ISO8601为False时,Week属性的排列以星期天为每周的第一天。
属性LeapMonth: Boolean;
LeapMonth为True时如果当月是闰月,则设置农历的闰月。如果当月不是闰月,不做任何动作。
属性:MaxMonthDays:Integer;
返回公历年当月的最大天数。
属性:Week:Integer;
返回星期对应的数值,当ISO8601=True 时,星期一返回 1,星期天返回 7。
当 ISO8601=False 时,星期天返回 1,星期六返回 7。
属性:property LunarDateSeparator: TLunar_DateSeparator;
定义农历字符串中间的间隔符号,缺省为“年”、“月”、“日”、“闰”。
TLunar_DateSeparator定义如下:
TLunar_DateSeparator = record
sYear: string[2];
sMonth: string[2];
sDay: string[2];
sLeapMonth: string[2];
end;
方法: constructor Create(AOwner: TComponent); override;
方法: destructor Destroy; override;
方法: procedure DateToLunarDate(sDate: TDate; var LD: TLunarDate);
将公历转换成农历。一般情况不需调用这个方法,当Date或LunarDate不管哪一个日历发生变化时,对方跟随发生变化。
方法: function LunarDateToDate(iDate: TLunarDate): TDate;
将农历转换成公历。一般情况不需调用这个方法,当Date或LunarDate不管哪一个日历发生变化时,对方跟随发生变化。
方法:function LunarDateToStr: string;
将TLunarDate格式的农历转换成字符串形式,2004年10月10日。日历中间的分隔符号如年、月、日由属性LunarDateSeparator定义。
方法:procedure StrToLunarDate(DateStr: string; var LD: TLunarDate);
将字符串格式的农历转换成TLunarDate格式的农历。
事件:OnChange;
日历发生变化时促发该事件。
为了测试TransDate组件,写了一个测试程序,可以从测试程序中得知如何使用TransDate组件。测试程序也是一个实用程序,可以直接使用。
日历数据从1900年至2056年,其中1935年到2056年的数据进行过校验,前面的数据就懒得校验了。使用过程中有什么问题,请发Email (gzgzlxg@hotmail.com) 与我联系。
节日:
公历变动节日22个,固定节日129个。
农历:14个。
附全部组件源码,测试程序源码,和数据单元源码,和测试程序。
打开测试程序前先安装TransDate组件。
少了一个“端午节”请按下面办法添加
请在TransDateConst.Pas文件的第206行后加一行:
206 (M: $0317; N: ‘妈祖生辰‘),
(M: $0505; N: ‘端午节‘), //加这一行。
修改第201行:
FeastOfLunars: array[0..11] of FeastOfLunarStr = (
为
FeastOfLunars: array[0..12] of FeastOfLunarStr = (
重新编译即可。
你也可以用上面所说的方法,将自己的生日,女朋友的生日,或是什么总要的日子加入这张常数表。编译即可。