由于农业生产的需要,商代已经有了比较完备的历法。
根据甲骨卜辞的记录可以看出,当时月有大小,大月三十天,小月二十九天,一年为十二月,因十二个大小月加起来只有354或355天,所以采用闰月来调整一年的天数,使一年中的四季变化能在一定的时间内。
这个闰月,在早期卜辞中是放在应当置闰那年最后的一个月即十二月之后,所以叫十三月。
这在历法上叫做年终置闰法。在晚期的卜辞中,闰月就放在应置闰那一年的某一月,如闰五月,那年当中就有两个五月,这在历法上叫做年中置闰法。这种历法,既不是根据太阳运动所测得的一年为基础的阳历,也不是以月亮圆缺为一个记日周期,即朔望月为基础的纯阴历,而是以闰(月)定四为成岁的阴阳合历。
岁字象一种有柄之半月形切割工具,其刃部上之二点,乃刃上所穿之孔,以便穿绳而将刃部紧缚于柄。古人用岁收割禾穗,又用以切割牲体,故岁之言穗,言刿,当是岁的正解。由于以岁收割庄稼,在卜辞中就有指一年的总称,例如:今岁受年(《甲》3298)、来岁受年(《乙》6881),但其是指一年的庄稼收成好坏,不是用作记时的。
年字也非记时之年,《说文》称:年,谷熟也。
《谷梁传》桓公三年亦云:五谷皆熟有年也。年可能是记若干个收获季节,如云:自今十年有五,王丰(《续》1·44·5),受■(有)年(《甲》3430)。甲骨卜辞中记时的年,不叫岁,也不叫年,早期卜辞中只记日月,晚期卜辞中才出现记时的年,叫作祀。这是与商王在一年中不断举行祭祀有关。我们知道,一年中,商王要根据不同的时间举行各种不同的祭祀,祭完一遍,一年的时间也就过去了,所以用祭祀的祀来代表年。这与《尔雅·释天》:夏曰岁,商曰祀,周曰年,唐虞曰载的说法是一致的。
春夏秋冬四季的分法,起于春秋时代以后,在此以前大概只有两季。甲骨文中的春字,作■(楚)形;秋字,作■形。贞,来春,不其受年(《粹》881)、戊午卜,我贞,今秋,我入商?(《后下》42·3)等辞中的春、秋两字都是一年的意思,不是四季中的春和秋。由于农业生产的需要,也有可能在商代只有春种、秋收两段时间的划分,所以就用春秋二字来代表一年的时间。
商代的记日方法是用十个天干和十二个地支字相配合来表示,即从甲配子(甲子)到癸配亥(癸亥),配完刚好是六十个。甲骨文中有一些干支表,不是卜辞,而是备用的历书,可能是当时的史官在占卜时刻查日期用的。用于支来记日的方法在商代以前就已经有了,在我国一直使用到近代。
商代的一天内的时间分段,都各有专名
甲骨卜辞中的日和夕是相对的,日指白天,夕指天黑以后至天亮以前的黑夜。
大采、大食、朝以后的时间叫做中日,相当于现在的正午。中日,其雨(《粹》719)的中日,甲骨文写作■日。中日以后的时间叫做昃,甲骨文作■形,象太阳已经偏西,人们需要侧头去看太阳的形状。小食,是商人下午吃饭的时间,大食、小食就是当时朝夕两餐之时。大食就是上午吃饭的时间。