ccc

中国日历类(Chinese Calendar Class (CCC))

  • 所有者: codechive/ccc
  • 平台:
  • 许可证:
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

即可。

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的一些性质都用相应的方法来取得。

到目前为止,这些性质和方法分成三组(同样是出于代码执行速度的考虑):

  1. 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()                                       阳历本月长度(月大月小字符串)
  1. CCC对象的节气子类的方法
首先建立CCC对象的节气子类对象: 

var sTerm=cccObject.solarTerm();

节气子类对象的属性(注意不是方法!)有两个:

sTermInMonth  —— 一个字符串数组,包含所在阳历月的两个节气日期和交节时刻
sTermName     —— 当前日期的节气名,若当天不是节气日,则是空字符串 
sTermTime     —— 当前日期的节气交节时刻,若当天不是节气日,则是空字符串 

示例:
如:sTerm.sTermInMonth[0]

  1. 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)做出自己的一分努力,那么就十分希望您能不断地宣传、交流甚或进一步完善摆在你面前的目前作者的这份阶段性工作。尤其是年代纪元,由于时间关系,我只输入至隋朝,但这已经把我弄得疲惫不堪了,我真希望谁能继续把这项
工作做完。在附件中我附上我国历史年表,大家可以参考。

主要指标

概览
名称与所有者codechive/ccc
主编程语言JavaScript
编程语言JavaScript (语言数: 1)
平台
许可证
所有者活动
创建于2014-01-08 07:26:07
推送于2014-01-08 07:38:57
最后一次提交2014-01-08 15:36:56
发布数0
用户参与
星数14
关注者数3
派生数2
提交数1
已启用问题?
问题数0
打开的问题数0
拉请求数0
打开的拉请求数0
关闭的拉请求数0
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?