ccc

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

  • Owner: codechive/ccc
  • Platform:
  • License::
  • Category::
  • Topic:
  • Like:
    0
      Compare:

Github stars Tracking Chart

即可。

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

Main metrics

Overview
Name With Ownercodechive/ccc
Primary LanguageJavaScript
Program languageJavaScript (Language Count: 1)
Platform
License:
所有者活动
Created At2014-01-08 07:26:07
Pushed At2014-01-08 07:38:57
Last Commit At2014-01-08 15:36:56
Release Count0
用户参与
Stargazers Count14
Watchers Count3
Fork Count2
Commits Count1
Has Issues Enabled
Issues Count0
Issue Open Count0
Pull Requests Count0
Pull Requests Open Count0
Pull Requests Close Count0
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private