即可。
2.新建一个CCC对象
直接用new方法新建一个CCC对象,即
var cccObject=new CCC(year,month,date,time,zone,calType);
其中
year(年)=正负整数,( 0是公元前1年,-1是公元前2年等等)
month(月)=1 -12
date(日)=正负整数
time=形如"22:30:15"(表示22时30分15秒)的字符串
zone(世界时区)= -12 - +13 (负表示西时区,正表示东时区)
calType(历种)=1,2,3 分别代表Normal(标准公历),Gregorian(格里历),Julian(儒略历)
也可以采用较少的参数新建对象:
三参数 var cccObject=new CCC(year,month,date)
四参数 var cccObject=new CCC(year,month,date,time)
四参数 var cccObject=new CCC(year,month,date,calType)
五参数 var cccObject=new CCC(year,month,date,time,calType)
六参数 var cccObject=new CCC(year,month,date,time,zone,calType)
其中time,zone和calType的缺省值是"0:0:0",8和1。
示例:
var myCal=new CCC(2003,5,8,"14:19:50",8,1);
3.CCC对象的方法
出于代码执行速度的考虑,CCC对象没有采用属性而只赋予方法,因为在JavaScript中一旦新建一个对象,就必须同时初始化其所有属性,而这是一件不太明智的事情,因为当我们只想取得CCC的某一两个属性时,没有必要将它的所有其他属性都一一初始化一遍。因而我决定将所有CCC的一些性质都用相应的方法来取得。
到目前为止,这些性质和方法分成三组(同样是出于代码执行速度的考虑):
- CCC对象下的直接的方法
语法是: cccObject.methodName()
如: myCal.day()返回myCal对象的星期数
CCC-v0.1-js的直接的方法如下:
方法 返回值
year() 年份数
month() 月份数
date() 日期数
time() 时间字符串
hour() 小时数
minute() 分钟数
second() 秒数
zone() 世界时区数
calType() 日历类型数
calType_Str() 日历类型字符串
JulianDay() 儒略日
day() 星期数
day_Str() 星期字符串(汉语)
day_ENStr() 星期字符串(英语)
solarZodiac() 十二星座数
solarZodiac_Str() 十二星座字符串
yGz() 年干支数
yGz_Str() 年干支字符串
mGz() 月干支数
mGz_Str() 月干支字符串
dGz() 日干支数
dGz_Str() 日干支字符串
hGz() 时干支数
hGz_Str() 时干支字符串
chineseZodiacName() 生肖字符串
chineseEra() 年代纪元字符串
stars28() 二十八宿数
stars28_Str() 二十八宿字符串
sFtvl() 公历节日字符串
jqFtvl() 节气节日字符串
monthLength() 阳历本月长度(天数)
monthLength_Str() 阳历本月长度(月大月小字符串)
- CCC对象的节气子类的方法
首先建立CCC对象的节气子类对象:
var sTerm=cccObject.solarTerm();
节气子类对象的属性(注意不是方法!)有两个:
sTermInMonth —— 一个字符串数组,包含所在阳历月的两个节气日期和交节时刻
sTermName —— 当前日期的节气名,若当天不是节气日,则是空字符串
sTermTime —— 当前日期的节气交节时刻,若当天不是节气日,则是空字符串
示例:
如:sTerm.sTermInMonth[0]
- CCC对象的农历子类的方法
首先建立CCC对象的农历子类对象:
var myLunarCal=cccObject.lunar();
农历子类对象的属性(注意不是方法!)有:
属性 值
lunarDate 农历日期数
lunarDate_Str 农历日期字符串
lunarMonth 农历月份数
lunarMonth_Str 农历月份字符串
syzygyType 朔望类型数
syzygyTime 朔望时刻(单位:天)
syzygyTime_Str 朔望时刻(字符串
syzygyName 朔望名称字符串
ecliType 日月食类型数
ecliType_Str 日月食类型字符串
ecliTime 日月食发生时刻(单位:天)
ecliTime_Str 日月食发生时刻(字符串)
示例:
如:myLunarCal.lunarDate_Str
三、进一步说明
1.公历(西历)
按照习惯,公元1582年10月4日之前(包括10月4日),采用儒略(Julian)历,公元1582年10月15日之后(包括10月15日),采用格里(Gregorian)历,公元1582年10月5日到10月14日,是格里历中被删掉的十天,故本年历无此十天。
2.农历
现行农历采用的是夏历(即建寅为正),所以本年历主要采用夏历,但由于历史上改朝换代或君王改换纪元等原因,曾有多次修改月建,在本年历中未作特别说明,现说明如下:
i)公元前256年(秦襄昭王52年)采用秦历,此前一直采用古周历(但春秋战国时各国历法不一,较为混乱)。秦历以十月为岁首,“后九月”为闰月。
ii)公元前105年,西汉太初元年五月改历,以正月为岁首,该年有十五个月(从十月、十一月、十二月、一月、二月、......十二月)。
iii)公元9年,新朝王莽始建国1年,以12月为正月(丑月),故上一年无“十二月”。
iv)公元23年,淮阳王改元更始,复用因寅正,以地皇十一月为更始1年的十月,故是年有两个十月。
v)三国魏青龙5年(公元237年)三月,改元景初,建丑为正,以三月为四月,四月为五月,...,十二月为正月。而景初三年十二月,魏复寅正,故是年有两个十二月。
vi)周武则天天授一年(载初1年,公元689年)十一月,该行周历子正。以十一月为岁首,该为载初1年正月,故乙丑年只有十个月。
vii)久视1年十月复寅正,以正月为十一月,故是年有14个月。
viii)唐上元2年(公元761年)九月去年号,但称元年。以建子为正,月以所建辰为名,原十月称亥月,原十一月称子月(岁首),...,原三月为辰月。而建巳月复寅正,恢复原月名,仍称四月。故辛丑年无十一月、十二月。壬寅年有十四个月。
另外,应当指出,本年历采用的都是实朔,而从春秋战国一直到唐初用的都是平朔,所以有在阴历日期上会有一日之差,应当说这是古人的不足。不过,古人常用日月食来校正日期(所谓观象授时),因而此时与本年历是吻合的。
3.干支
根据古代术数,年干支以立春为界,而月干支按节气月(从立春到雨水为一月,余类推)赋予,日干支以子时(从现代时间23时开始)为界。
4.节气
本年历的节气全部采用定节气(最大误差不超过30分钟),但应注意我国古代历法知道清初才采用定节气,之前一直用平节气。
5.朔望交食
最大误差为3分钟,遇到日月食时,朔望时间可视为食甚时刻。由于所用时间均为北京时间,故他地须作时差转换,各地应根据日出日落时间来判断日月食能否看到。
6.生肖星座
生肖按年地支推出,故也以立春为界。十二星座可能在名称或日期范围上与有些资料不一致,但目前的状况确实如此。
7.儒略日(Julian Day)
本年历的儒略日精确到时,以儒略历公元前4713年1月1日格林尼治时间正午12时为起点。
8.各种节日
公历节日,传统节日和名人纪念日,以及冬九九,夏三伏,梅雨季节等,但夏三伏,梅雨等等有不同说法,本年历按最常见的习惯制定。
四、实例应用——在线万年历
我的一个直接运用CCC编写的在线万年历的例子
见Cal.htm或http://202.112.86.128/studentspace/aqyw/js/calendars/rili/cal.htm
五、作者的希望
如果您有志于为中国日历类(CCC)做出自己的一分努力,那么就十分希望您能不断地宣传、交流甚或进一步完善摆在你面前的目前作者的这份阶段性工作。尤其是年代纪元,由于时间关系,我只输入至隋朝,但这已经把我弄得疲惫不堪了,我真希望谁能继续把这项
工作做完。在附件中我附上我国历史年表,大家可以参考。