分享

历法

 西域美丽 2023-03-01 发布于新疆

北京时间:
东经120°(东八区),北京时间=北京时间比格林尼治时间+8小时
Calendar bjcalendar = Calendar.getInstance();
bjcalendar.setTimeZone(TimeZone.getTimeZone(“GMT+8:00”));

平太阳时间:
我们平时生活中的用到的北京时间就是平太阳时间,但使用时一般指当地的经度对应的时间(地方时),比如所在北京116°21′,这个经度和北京标准时间对应的经度相差3度,那么时间也就差了870秒左右。

  这里获取方式有二种,第一种使用GPS定位里面的时间,这个最准
   Calendar locCalendar = Calendar.getInstance();
   locCalendar(location.getTime());

   第二种使用当地城市坐标和北京(东八区换算)得到相对准确的时间
   其计算公式为地方标准时间=北京标准时间+4分×(地方经度一12O度)。
因为各经度相对东经120度时间差基本不会变化,可以定义成常量
      eg。北京数据如下
            '北京市区', 116.46, -850, 39.92//城市名称,经度,时间差(精确到秒),纬度
            '北京平谷', 117.10, -696, 40.13
             '北京密云', 116.85, -756, 40.37
             '北京顺义', 116.65, -804, 40.13
             '北京通县', 116.67, -799, 39.92
             '北京怀柔', 116.62, -811, 40.32
             '北京大兴', 116.33, -881, 39.73
             '北京房山', 115.98, -965, 39.7
             '北京延庆', 115.97, -967, 40.47
             '北京昌平', 116.20, -912, 40.22
     使用
      
          Calendar bjcalendar = Calendar.getInstance();
          bjcalendar.setTimeZone(TimeZone.getTimeZone('GMT+8:00'));
          Calendar locCalendar = Calendar.getInstance();
          locCalendarbjcalendar.getTimeInMillis() + selectCity.differTime * 1000);

真太阳时间:
太阳视圆面中心连续两次上中天的时间间隔叫做真太阳日。1真太阳日又分为24真太阳时。这个时间系统称为真太阳时。因此,为了和人们的日常生活习惯一致,把真太阳时定义为:真太阳视圆面中心的时角加12小时。因为真太阳时是观测太阳视圆面中心得到的,所以真太阳时也称为视太阳时,简称视时。即:真太阳时=地方时+均时差。

均时差:地球的轨道是椭圆的,依据克卜勒运动定律,太阳移动速度有时较快,有时较慢(+/-16分钟)。由于这个变换较小可以在相关天文观测数据里面把这些数值定义成常量
eg。:
(0, -189),//1月01日,-3:9
(1, -218),//1月02日,-3:38
(2, -246),//1月03日,-4:6
(3, -273),//1月04日,-4:33
(4, -301),//1月05日,-5:1

   Calendar calendar = Calendar.getInstance();
   calendar.setTimeInMillis(locTime -189*1000);

黄帝纪年
黄帝纪年是根据黄帝历和天干地支以及帝王世系表推算的华夏人文初祖黄帝即位以及创制历法的时间开始纪年。

农历
农历是我国传统历法,又有阴历、华历、夏历、汉历、中历等名称。农历并不是纯阴历,而是一种阴阳合历,取月相的变化周期即朔望月为月的长度,加入干支历“二十四节气”成分,参考太阳回归年为年的长度,通过设置闰月以使平均历年与回归年相适应。农历是以阴历(夏历)为基础,融合阳历成分而成的一种历法。所以我国的农历从严格意义上说不应该叫阴历,而是阴阳合历。 [1-2]
农历属于一种阴阳合历:其年份分为平年和闰年。平年为十二个月;闰年为十三个月。月份分为大月和小月,大月三十天,小月二十九天,其平均历月等于一个朔望月。一年中哪个月大,哪个月小,由计算决定。
农历是兼顾太阳、月亮与地球关系的一种历法。阴历不考虑地球绕太阳的运行,因而使得四季的变化在阴历上就没有固定的时间,不能反映季节。与阳历年固定在365天或366天不同的是,阴历年相比阳历年在天数上有时会相差一个月;为了协调阴历年与阳历年之间的天数,于是便通过“置闰法”进行调整使阴历月相总天数与阳历回归年总天数相适应
干支纪年:
干支(gānzhī)纪年法是中国历法上自古以来就一直使用的纪年方法。干支是天干和地支的总称。把干支顺序相配正好六十为一周,周而复始,循环记录,这就是俗称的“干支表”。
甲、乙、丙、丁、戊、己、庚、辛、壬、癸十个符号叫天干;
子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥十二个符号叫地支。
干支纪月
干支纪月是指在农历中用干支记录月序。只用地支纪月,每月固定用十二地支表示。把冬至所在之月称为“子月”(农历十一月),下一个月称为“丑月”(农历十二月),以此类推。故古历中的《夏历》以“寅月”为正月,又称建寅之月或建寅正月等。
干支纪月以农历每月初一日作为分界点。

干支纪时
干支纪时,就是用60组各不相同的天干地支按照既定方式标记时间的纪时方法。它是干支历的重要组成部分。既定方式为把1天分为12个时辰,从晚上23点正开始,从甲子这个干支开始标注第一个时辰,一个时辰相当于现在两个小时,之后每两个小时接着顺序标注,60组干支不断循环往复。由于地支只有12个,所以是固定不变的,古时人们说时辰的时候,只说地支就可以了
这里需要特别注意刻的计算,一般采用百刻制

百刻制说明:一日百刻。一时辰八大刻,二小刻。一大刻六十分,一小刻十分,一时辰共五百分。初初小刻为界,正初小刻为中。初一、初二、初三、初四为上四大刻;正一、正二、正三、正四为下四大刻。换算成现代秒数,即一分为14.4秒,一小刻为144秒即2.4分钟,一大刻为864秒即14.4分钟。

示例图片
在这里插入图片描述
二十八星宿

最近在整理二十八星期排序发现网络有些数据是错误的,先把自己的整理记录一下
错误表象一:28星宿有一部分数据只有27个,漏掉了一个
错误表象二:星宿的排序直接使固定的月份对照

(古代历算家以二十八宿中的一宿配六十甲子,共得甲子七次,称为七元,对于七元甲子的意义(协纪辨方.本原)解释说:'考原云:日有六十,宿有二十八,四百二十日而一周,四百二十者,以六十与二十八俱可度尽也.故有七元之说.
一元甲子起虚;
二元甲子起奎;
三元甲子起毕;
四元甲子起鬼;
五元甲子起翼;
六元甲子起氏;
七元甲子起箕
至七元尽,而甲子又起虚,周而复始.)

二十八宿从角宿开始,自西向东排列,与日、月视运动的方向相同。每一个方位对应7个星宿
东方青龙七宿:角、亢、氐、房、心、尾、箕
北方玄武七宿:斗、牛、女、虚、危、室、壁
西方白虎七宿:奎、娄、胄、昴、毕、觜、参
南方朱雀七宿:井、鬼、柳、星、张、翼、轸

二十八宿与十二地支对应关系
地支是中国古代天文学最最核心的内容,是中国古代天文学最重要的符号。地支来源古代二十八星宿另一种一年的表达方式。地支创建的方法是采用二十八星宿部分星象符号。
二十八宿从角宿开始,自西向东排列,与日、月视运动的方向相反:
东方称青龙:角木蛟、亢金龙、氐土貉、房日兔、心月狐、尾火虎、箕水豹;
北方称玄武:斗木獬、牛金牛、女土蝠、虚日鼠、危月燕、室火猪、壁水貐;
西方称白虎:奎木狼、娄金狗、胃土雉、昴日鸡、毕月乌、觜火猴、参水猿;
南方称朱雀:井木犴、鬼金羊、柳土獐、星日马、张月鹿、翼火蛇、轸水蚓。

后来巴比伦人把星期制的七天,分别配上一个天体的名字,星期也即是星的日期的意思,有时也把星期叫做'曜日'.如日曜日就是星期天:代表大阳;星期一是月曜日,代表月亮;星期二是火曜日,代表火星;星期三是水曜日,代表水星;星期四是木曜日,代表木星;星期五是金曜日,代表金星;星期六是土曜日,代表土星.星期制的产生与的月亮园缺变化有关,而'礼拜'则是基督敖使用的浯言 ,和中国太阳、太阴、金、木、水、火、土对应
星期日→日禽日
星期一→月禽日
星期二→火禽日
星期三→水禽日
星期四→木禽日
星期五→金禽日
星期六→土禽日
所以准确的计算方式是先找一个确定的星宿的天,对应星宿xingXiu及其对应的干支earDay。然后计算某一天和xingXiu的差值,然后按照28星宿的轮询顺序得到准确的星宿。

根据轮询的规则如人总结了 四句三合局起宫位的口诀
1,虚毕翼箕奎鬼氐。申子辰日用;
2,昂张尾壁井亢女,亥卯未日用;
3,星心室参角牛胃,寅午戌日用;
4,房危觜轸斗娄柳,巳酉丑日用。
把星期放进去就是下图:
在这里插入图片描述
按照上面的表即可得到准确的某一天的星宿

古人在此基础上面还有一套立法,即年月日时都用星宿表示。
二十八宿即“禽星”,分四方、七政。
一元虚张室轸遊,二元奎亢胃房求,三毕尾参求觅斗,四鬼女星危月求。五翼壁角娄金狗,六氐昴嘴火猴,七箕井畔牛边柳,此是七元四将头

  • 年禽起例(禽:星宿)
    “弘治甲子上元逢,三元符将依旧还。中元已卯符头定,甲午已酉年值通。康熙上元毕月值,循环顺数去无穷”
    按笫四条二十八宿一年填一宿即可,如:一元甲子的第一年甲子年是虚值年,第二年乙丑年是危值年,第三年是室值年。然后28宿按序一年一年的周而复始往后排列

1918年角宿值年,1919年亢宿值年…1924年中元甲子箕宿值年…1984年下元甲子虚宿值年,2002年箕宿值年。

  • 月禽起例
    二十八宿历的月仍按七元甲子推排
    “会得年禽月易求,太阳用角木参头,太阴室宿火星值,金心土胃水骑牛”。
    周其法,若太阳值年,正月是角,太阴值年,正月是室。顺数十二月,每月值一星,余傲此。---引自四库全书
    此诀解为看其年二十八宿那一禽宿值年,根据其宿五行决定那一宿起正月的月禽。如2002年壬午为箕宿值日,箕属水五行,根据“水骑牛”正月为牛金羊值月,二月为女土蝠值
    这里要特别注意 月的支顺序是
    “寅”, “卯”, “辰”, “巳”, “午”, “未”, “申”, “酉”, “戌”, “亥”, “子”, “丑”
    即阴历的11月是子月,即甲子月是11月,不是正月
  • 日禽起例
    “七元禽星会者稀,虛奎毕鬼翼氏箕,但将甲子从头数,元元相续报君知”
    日有六十,宿有二十八,只有通过七周期四百二十日而一周,依上决一元甲子起虛宿,二元甲子起奎木狼,依法处理此类推。

数学的计算规则: 因为420是60甲子和28宿的最小公倍数,所以二十八宿有七元甲子共420天。 一元甲子起虚(以子象鼠而虚为日鼠也),二十八宿往后依序编排。即甲子(1)在虚,第57(1+28*2)位也在虚,第58位在危,第59位在室,第60位在壁,第61位(也就是第1位的甲子)在奎。所以二元甲子起奎,依法得,三元甲子起毕,四元甲子起鬼,五元甲子起翼,六元甲子起氐,七元甲子起箕。
按日历推算:
最近的“一元一将”是1996年1月28日,该日儒略日为2450111,加420日又是“一元一将”,即1997年3月23日的甲子日又是“一元一将”
如1984年下元甲子年七月初二甲子 日为一元一将,虛日宿值日,并且此日肯定是星期日,七月十七为一元二将,张月值日,张属月为星期一。
如:2002年2月10日已酉日是“二元四将”,按笫五条口诀值日是女土蝠。

  • 时禽起例
    日起时禽起子时,日虛月鬼火从箕,水毕朩氏金奎位,土宿还从翼宿推
    同上理,四日值日,虛宿起子时,依此类推。
    1、一元时禽起例
    一元禽星会者稀,日虚月鬼火从箕,水毕朩氐金奎位,土宿还从翼去推。
    2、二元时禽起例
    二元禽星会者稀,日鬼月箕火毕之,水氐朩奎金翼位,土宿还从虛位推。
    3、三元时禽起例
    三元禽星会者稀,日箕月毕火氐依,水奎朩翼金虛上,土宿还从鬼位推。
    4、四元时禽起例
    四元禽星会者稀,日毕月氐火从奎,水翼朩虛鬼金位,土宿还从箕上推。
    5、五元时禽起例
    五元禽星会者稀,日氐月奎火翼宜,水虛朩鬼金箕位,土宿还从毕上推。
    6、六元时禽起例
    六元禽星会者稀,日虚月翼火虛追,水鬼朩箕金毕位,土宿还寻氏上推。
    7、七元时禽起例
    七元禽星会者稀,日翼月虛火鬼居,水箕朩毕金氏位,土宿还从奎上推。

紫白飞星
三元九运每元各二十年,在此二十年中每年天体的运行位置不同,对地球的反照也不同,其人与事的吉凶各异,其应验结果是有区别的,在二十年中九星轮三次运照地球,除五黄外共计二十四年,再减云父母三般以正三元,余二十一位,加上黄金岁差与磁偏角计二十年左右,因阴阳宅是注重空间与时间通气的学问,气流吉凶随时都在变化,所以年紫白飞星对于风水的吉凶变化是有很大影响的,在判断风水每年的吉凶,就必须运用年紫白飞星盘。
年月日時紫白(入中)计算办法

  • 年紫白(入中)计算办法
    方法1:方法1转载自臣风易友
    公元年份相加减1所得数字(9以内:计算技巧,满9舍弃,逢0计9),此数的合十数。如2010年,2+1-1=2,10-2=8,所以2010年入中紫白为8;又如1998年,1+9+9+8-1=(8),10-8=2,所以1998年入中紫白为2。
    另外,有很多流派会用到命卦,男命命卦即年入中紫白,女命命卦计算办法为公元年份加4的9余数。(9余数即除以9所产生的余数,余数为0时0即为9。
    方法二: 方法描述
    代码实现
   public static int addNum(int num) {
        int sum = 0;
        while (num != 0) {
            sum = sum + num % 10;
            num = num / 10;
        }
        return sum;
    }
    //NewConstant.FEI_XING_YEAR数据:
    一白 九紫 八白 七赤 六白 五黄 四绿 三碧 二黑 一白
  public static String getFeiXingYear(int year) {
        int sum = addNum(year);
        while (sum > 9) {
            sum = addNum(sum);
        }
        return NewConstant.FEI_XING_YEAR[sum];
    }
  • 月紫白(入中)计算办法
    方法1: 方法1转载自臣风易友
    月紫白(入中)的计算方法(知道年紫白入中)
    1.设年紫白(入中)为“年”,月数为“月”;
    2.则月紫白(入中)的计算方法为:(3年-3-月)÷9所得的余数(余数≤0时,余数加9);
    3.如2010年9月,年为8,月为9,月紫白(入中)的计算方法为:(3×8-3-9)÷9=1……3,所以如2010年9月月紫白(入中)为3。
    方法二:
    歌诀:午卯酉八白求,辰戌丑未五宫游,四孟之年从二黑,逆寻月份顺宫流。
    推法:
        凡是子午卯酉年的正月为8、二月为7、三月为6、四月为5、……十二月为6,
        辰戌丑未年的正月为5、二月为4、三月为3……十二月为3,
        寅申巳亥年的正月为2、二月为1、三月为9……十二月为9,
       
    计算代码
//NewConstant.FEI_XING_MONTH : 一白 二黑 三碧 四绿 五黄 六白 七赤 八白 九紫
 /**
     * @param earZhiYear 年支
     * @param lunarMonthName 农历月名称
     * @return
     */
   public static String getFeiXingMonth(String earZhiYear, String lunarMonthName) {
        int lunMonthIndex = CalendarUtils.transferLunarMonth2Index(lunarMonthName);//计算月索引0-11
        int startIndex;
        if ('子午卯酉'.contains(earZhiYear)) {
            startIndex =1;
        } else if ('辰戌丑末'.contains(earZhiYear)) {
            startIndex = 4;
        } else {//寅申巳亥
            startIndex = 7;
        }
        return NewConstant.FEI_XING_MONTH[8 - (startIndex + lunMonthIndex) % 9];
    }
  • 日紫白(入中)的计算方法
    歌诀:日家紫白不难求,二十四气六宫周,冬至阳生前后节,顺行甲子一宫移, 雨水便从七宫起,谷雨还从四绿推,阴生夏至九宫逆,处暑前后三碧是, 霜降六宫起甲子,顺逆分明十二支,有是何星当值日,移入中宫顺逆飞。
    计算过程:
    冬至后的第一个甲子日为一白、乙丑日为二黑、丙寅日为三碧,依次……
        雨水后的第一个甲子日为七赤、乙丑日为八白、丙寅日为九紫,依次……
        谷雨后的第一个甲子日为四碧、乙丑日为五黄、丙寅日为六白,依次……
        夏至后的第一个甲子日为九紫、乙丑日为八白,丙寅日为七赤,依次……
        处暑后的第一个甲子日为三碧、乙丑日为二黑,丙寅日为一白,依次……
        霜降后的第一个甲子日为六白、乙丑日为五黄,丙寅日为四绿,依次……

实现代码如下

/**
1.冬至至立春末日:日干支序数÷9所得余数(除尽时余数为9);
     * 
2.雨水至清明末日:(日干支序数+6)÷9所得余数(除尽时余数为9);
     * 
3.谷雨至芒种末日:(日干支序数+3)÷9所得余数(除尽时余数为9);
     * 
4.夏至至立秋末日:日干支序数÷9所得余数(除尽时余数为9)的合十数;
     * 
5.处暑至寒露末日:(日干支序数+6)÷9所得余数(除尽时余数为9)的合十数;
     * 
6.霜降至大雪末日:(日干支序数+3)÷9所得余数(除尽时余数为9)的合十数;
     * '冬至', '小寒', '大寒', '立春',
     * '雨水', '惊蛰', '春分', '清明',
     * '谷雨', '立夏', '小满', '芒种',
     * '夏至', '小暑', '大暑', '立秋',
     * '处暑', '白露', '秋分', '寒露',
     * '霜降', '立冬', '小雪', '大雪'
     *
     * @param jq 二十四节气索引
     * @return 节气分割索引
     * 冬至至立春末日 0
     * 雨水至清明末日 1
     * 谷雨至芒种末日 2
     * 夏至至立秋末日 3
     * 处暑至寒露末日 4
     * 霜降至大雪末日 5
     */
    public static int getFeiXingDayDiv(int jq) {
        if (jq >= 0 && jq < 4) {//0冬至  4雨水      立春末日:雨水的前一天
            return 0;
        } else if (jq >= 4 && jq < 8) {//8 谷雨     清明末日:谷雨的前一天
            return 1;
        } else if (jq >= 8 && jq < 12) {//12 夏至   芒种末日:夏至的前一天
            return 2;
        } else if (jq >= 12 && jq < 16) {//16处暑   立秋末日:处暑的前一天
            return 3;
        } else if (jq >= 16 && jq < 20) {//20 霜降  寒露末日:霜降的前一天
            return 4;
        } else {                        //          大雪末日:冬至的前一天
            return 5;
        }
    }

/**

NewConstant.FEI_XING_DAY:一白 二黑 三碧 四绿 五黄 六白 七赤 八白 九紫
 * @param jqIndex  节气索引0 -23
     * @param eraDay 日干支
     * @return
     */
    public static String getFeiXingDay(int jqIndex, String eraDay) {
          int startIndex = 0;
        int jqDiv = getFeiXingDayDiv(jqIndex);
        int earIndex = transferDaysGanZHi2Index(eraDay);
        if (jqDiv == 0) {
            startIndex = 0;
        } else if (jqDiv == 1) {
            startIndex = 6;
        } else if (jqDiv == 2) {
            startIndex = 3;
        } else if (jqDiv == 3) {
            startIndex = 8;
        } else if (jqDiv == 4) {
            startIndex = 2;
        } else {
            startIndex = 5;
        }
        if (jqIndex >= 12) {//夏至 - 冬至 逆序
            return NewConstant.FEI_XING_MONTH_DAY[8 - (startIndex + earIndex) % 9];
        } else {//冬至后 顺序
            return NewConstant.FEI_XING_MONTH_DAY[(startIndex + earIndex) % 9];
        }
    }

参考资料
https://baike.baidu.com/item/二十八星宿/675
https://baike.baidu.com/item/农历二十四节气/3405412?fromtitle=农历节气
http://blog.sina.com.cn/s/blog_45af90ec0101cd31.html
http://blog.sina.com.cn/s/blog_7335b7250102w4k1.html
http://www.360doc.com/content/10/1128/19/414835_73198449.shtml
http://baijiahao.baidu.com/s?id=1586355490773164695&wfr=spider&for=pc

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多