一个月是28天,因为月亮的阴晴圆缺的周期是28天多一点。那么好了,月亮的变化周期,一个完成的序列是从没有月亮开始的,或者是从刚刚看到月亮西半部分的小月牙(在北半球,南半球相反)开始,这一天叫做农历初一,天文学上叫新月。这一天之后大约经过7天,月亮就变成了西边一半是亮的,明暗分界线是一条直线。这个时候叫做上弦月。再过7天,就变成了圆满的月亮,也就是满月,天文学上叫望。再过七天,变成了东侧半个月亮,和上弦一样,但是方向反过来,叫做下弦月。再过7天,又变成了新月。月亮的变化是随时随刻的连续的变化,从新月到下一个新月,中间有无数个过程。但是新月、上弦、望、下弦是特别容易确定的,常人很容易看出今天的月亮是满月还是上弦月。所以用这样4个关键点作为时间分割就很方便。
月相的朔、望、晦分别指代什么
农历每月初一是朔日,朔日当天的月亮称为朔月。朔月是新月,农历每月初一时,月亮正好位于地球和太阳之间,能被太阳光照到的地方正好位于月亮的背面,加之它和太阳一同升降,因此地球人都看不见。
农历每月十五是望日,望日当天的月亮称为望月,望月又称满月,月影呈圆形。此时月亮在空中运行到太阳的正对面,日、月相距180°,即地球位于太阳和月亮之间,从地球上看去,月亮的整个光亮面对着地球。《尔雅•释名•释天》:“望,月满之名也。月大十六日、小十五日,日在东,月在西,遥相望也。”满月阶段,黄昏时满月由东边升起,黎明时向西边沉落。
什么是五星七曜_民俗预测
农历每月最后一天是晦日,这天的月亮称晦月。月终之日。许慎《说文》:“月尽也。”从每,许慎《说文》释每:“草盛上出也。”每与萌同声相借,萌芽欲出但未显。又每与昧字声同。
人们把每月朔月、望月这样循环的变化过程称为朔望月。
Calendar c = Calendar.getInstance();
c.set(2014, Calendar.MARCH, 31);
c.add(Calendar.MONTH, 13);
System.out.println(c.getTime());// 2015-04-30
c.set(2014, Calendar.MARCH, 31);
c.set(Calendar.MONTH, c.get(Calendar.MONTH) + 13);
System.out.println(c.getTime());// 2015-05-01
c.set(2014, Calendar.MARCH, 31);
c.roll(Calendar.MONTH, 13);
System.out.println(c.getTime());//2014-04-30
ADD方法
以调整的单位为基点(本例中为月),较大的单位(年)会发生借位、进位。 较小的单位会往小调整。
本例中,2014-03-31,加上13个月,年份会进位为2015年。 4月31日是不存在的,所以往小调整为4月30日。
比较典型的运用场景是,日历的按月切换。
当前日期为2014-03-31,点击【下一月】按钮时,日期会变成2014-04-30.
SET方法
所有的单位都会往大调整。
本例中,2014-03-31,加上13个月,年份会进位为2015年。 4月31日是不存在的,所以往大调整为5月1日
ROLL方法
以调整的单位为基点(本例中为月),较大的单位(年)不会发生改变。 较小的单位会往小调整。
本例中,2014-03-31,加上13个月,年份依然为2014年。 4月31日是不存在的,所以往小调整为4月30日。
日会根据年、月来判断出日的取值范围,然后在1~31之间无限循环滚动,但并不会影响到年、月的值。
总结三点:
1、add() 有两条规则:
a)当被修改的字段超出它的取值范围时,那么比它大的字段会自动修正。
b)如果比它小的字段是不可变的/不在取值范围内(由 Calendar 的实现类决定),那么该小字段会修正到变化最小的值。
2、Roll() 的规则只有第二条
当被修改的字段超出它的取值范围时,那么比它大的字段不会被修正。比它小的字段会修正到变化最小的值。
3、Set()
比被修改的字段大的字段会根据字段是增大还是减小自动改变大小,比被修改字段小的字段如果是不可变的/不在取值范围内,会自动增大到变化最小的值。