|
北京時間: 東經(jīng)120°(東八區(qū)),北京時間=北京時間比格林尼治時間+8小時 Calendar bjcalendar = Calendar.getInstance(); bjcalendar.setTimeZone(TimeZone.getTimeZone(“GMT+8:00”));
平太陽時間: 我們平時生活中的用到的北京時間就是平太陽時間,但使用時一般指當?shù)氐慕?jīng)度對應的時間(地方時),比如所在北京116°21′,這個經(jīng)度和北京標準時間對應的經(jīng)度相差3度,那么時間也就差了870秒左右。
這里獲取方式有二種,第一種使用GPS定位里面的時間,這個最準
Calendar locCalendar = Calendar.getInstance();
locCalendar(location.getTime());
第二種使用當?shù)爻鞘凶鴺撕捅本|八區(qū)換算)得到相對準確的時間
其計算公式為地方標準時間=北京標準時間+4分×(地方經(jīng)度一12O度)。
因為各經(jīng)度相對東經(jīng)120度時間差基本不會變化,可以定義成常量
eg。北京數(shù)據(jù)如下
'北京市區(qū)', 116.46, -850, 39.92//城市名稱,經(jīng)度,時間差(精確到秒),緯度
'北京平谷', 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);
真太陽時間: 太陽視圓面中心連續(xù)兩次上中天的時間間隔叫做真太陽日。1真太陽日又分為24真太陽時。這個時間系統(tǒng)稱為真太陽時。因此,為了和人們的日常生活習慣一致,把真太陽時定義為:真太陽視圓面中心的時角加12小時。因為真太陽時是觀測太陽視圓面中心得到的,所以真太陽時也稱為視太陽時,簡稱視時。即:真太陽時=地方時+均時差。
均時差:地球的軌道是橢圓的,依據(jù)克卜勒運動定律,太陽移動速度有時較快,有時較慢(+/-16分鐘)。由于這個變換較小可以在相關天文觀測數(shù)據(jù)里面把這些數(shù)值定義成常量 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);
黃帝紀年 黃帝紀年是根據(jù)黃帝歷和天干地支以及帝王世系表推算的華夏人文初祖黃帝即位以及創(chuàng)制歷法的時間開始紀年。
農歷 農歷是我國傳統(tǒng)歷法,又有陰歷、華歷、夏歷、漢歷、中歷等名稱。農歷并不是純陰歷,而是一種陰陽合歷,取月相的變化周期即朔望月為月的長度,加入干支歷“二十四節(jié)氣”成分,參考太陽回歸年為年的長度,通過設置閏月以使平均歷年與回歸年相適應。農歷是以陰歷(夏歷)為基礎,融合陽歷成分而成的一種歷法。所以我國的農歷從嚴格意義上說不應該叫陰歷,而是陰陽合歷。 [1-2] 農歷屬于一種陰陽合歷:其年份分為平年和閏年。平年為十二個月;閏年為十三個月。月份分為大月和小月,大月三十天,小月二十九天,其平均歷月等于一個朔望月。一年中哪個月大,哪個月小,由計算決定。 農歷是兼顧太陽、月亮與地球關系的一種歷法。陰歷不考慮地球繞太陽的運行,因而使得四季的變化在陰歷上就沒有固定的時間,不能反映季節(jié)。與陽歷年固定在365天或366天不同的是,陰歷年相比陽歷年在天數(shù)上有時會相差一個月;為了協(xié)調陰歷年與陽歷年之間的天數(shù),于是便通過“置閏法”進行調整使陰歷月相總天數(shù)與陽歷回歸年總天數(shù)相適應 干支紀年: 干支(gānzhī)紀年法是中國歷法上自古以來就一直使用的紀年方法。干支是天干和地支的總稱。把干支順序相配正好六十為一周,周而復始,循環(huán)記錄,這就是俗稱的“干支表”。 甲、乙、丙、丁、戊、己、庚、辛、壬、癸十個符號叫天干; 子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥十二個符號叫地支。 干支紀月 干支紀月是指在農歷中用干支記錄月序。只用地支紀月,每月固定用十二地支表示。把冬至所在之月稱為“子月”(農歷十一月),下一個月稱為“丑月”(農歷十二月),以此類推。故古歷中的《夏歷》以“寅月”為正月,又稱建寅之月或建寅正月等。 干支紀月以農歷每月初一日作為分界點。
干支紀時 干支紀時,就是用60組各不相同的天干地支按照既定方式標記時間的紀時方法。它是干支歷的重要組成部分。既定方式為把1天分為12個時辰,從晚上23點正開始,從甲子這個干支開始標注第一個時辰,一個時辰相當于現(xiàn)在兩個小時,之后每兩個小時接著順序標注,60組干支不斷循環(huán)往復。由于地支只有12個,所以是固定不變的,古時人們說時辰的時候,只說地支就可以了 這里需要特別注意刻的計算,一般采用百刻制
百刻制說明:一日百刻。一時辰八大刻,二小刻。一大刻六十分,一小刻十分,一時辰共五百分。初初小刻為界,正初小刻為中。初一、初二、初三、初四為上四大刻;正一、正二、正三、正四為下四大刻。換算成現(xiàn)代秒數(shù),即一分為14.4秒,一小刻為144秒即2.4分鐘,一大刻為864秒即14.4分鐘。
示例圖片  二十八星宿
最近在整理二十八星期排序發(fā)現(xiàn)網(wǎng)絡有些數(shù)據(jù)是錯誤的,先把自己的整理記錄一下 錯誤表象一:28星宿有一部分數(shù)據(jù)只有27個,漏掉了一個 錯誤表象二:星宿的排序直接使固定的月份對照
(古代歷算家以二十八宿中的一宿配六十甲子,共得甲子七次,稱為七元,對于七元甲子的意義(協(xié)紀辨方.本原)解釋說:'考原云:日有六十,宿有二十八,四百二十日而一周,四百二十者,以六十與二十八俱可度盡也.故有七元之說. 一元甲子起虛; 二元甲子起奎; 三元甲子起畢; 四元甲子起鬼; 五元甲子起翼; 六元甲子起氏; 七元甲子起箕 至七元盡,而甲子又起虛,周而復始.)
二十八宿從角宿開始,自西向東排列,與日、月視運動的方向相同。每一個方位對應7個星宿 東方青龍七宿:角、亢、氐、房、心、尾、箕 北方玄武七宿:斗、牛、女、虛、危、室、壁 西方白虎七宿:奎、婁、胄、昴、畢、觜、參 南方朱雀七宿:井、鬼、柳、星、張、翼、軫
二十八宿與十二地支對應關系 地支是中國古代天文學最最核心的內容,是中國古代天文學最重要的符號。地支來源古代二十八星宿另一種一年的表達方式。地支創(chuàng)建的方法是采用二十八星宿部分星象符號。 二十八宿從角宿開始,自西向東排列,與日、月視運動的方向相反: 東方稱青龍:角木蛟、亢金龍、氐土貉、房日兔、心月狐、尾火虎、箕水豹; 北方稱玄武:斗木獬、牛金牛、女土蝠、虛日鼠、危月燕、室火豬、壁水貐; 西方稱白虎:奎木狼、婁金狗、胃土雉、昴日雞、畢月烏、觜火猴、參水猿; 南方稱朱雀:井木犴、鬼金羊、柳土獐、星日馬、張月鹿、翼火蛇、軫水蚓。
后來巴比倫人把星期制的七天,分別配上一個天體的名字,星期也即是星的日期的意思,有時也把星期叫做'曜日'.如日曜日就是星期天:代表大陽;星期一是月曜日,代表月亮;星期二是火曜日,代表火星;星期三是水曜日,代表水星;星期四是木曜日,代表木星;星期五是金曜日,代表金星;星期六是土曜日,代表土星.星期制的產生與的月亮園缺變化有關,而'禮拜'則是基督敖使用的浯言 ,和中國太陽、太陰、金、木、水、火、土對應 星期日→日禽日 星期一→月禽日 星期二→火禽日 星期三→水禽日 星期四→木禽日 星期五→金禽日 星期六→土禽日 所以準確的計算方式是先找一個確定的星宿的天,對應星宿xingXiu及其對應的干支earDay。然后計算某一天和xingXiu的差值,然后按照28星宿的輪詢順序得到準確的星宿。
根據(jù)輪詢的規(guī)則如人總結了 四句三合局起宮位的口訣 1,虛畢翼箕奎鬼氐。申子辰日用; 2,昂張尾壁井亢女,亥卯未日用; 3,星心室參角牛胃,寅午戌日用; 4,房危觜軫斗婁柳,巳酉丑日用。 把星期放進去就是下圖:  按照上面的表即可得到準確的某一天的星宿
古人在此基礎上面還有一套立法,即年月日時都用星宿表示。 二十八宿即“禽星”,分四方、七政。 一元虛張室軫遊,二元奎亢胃房求,三畢尾參求覓斗,四鬼女星危月求。五翼壁角婁金狗,六氐昴嘴火猴,七箕井畔牛邊柳,此是七元四將頭
- 年禽起例(禽:星宿)
“弘治甲子上元逢,三元符將依舊還。中元已卯符頭定,甲午已酉年值通??滴跎显呍轮?,循環(huán)順數(shù)去無窮” 按笫四條二十八宿一年填一宿即可,如:一元甲子的第一年甲子年是虛值年,第二年乙丑年是危值年,第三年是室值年。然后28宿按序一年一年的周而復始往后排列
1918年角宿值年,1919年亢宿值年…1924年中元甲子箕宿值年…1984年下元甲子虛宿值年,2002年箕宿值年。
- 月禽起例
二十八宿歷的月仍按七元甲子推排 “會得年禽月易求,太陽用角木參頭,太陰室宿火星值,金心土胃水騎?!薄?/code> 周其法,若太陽值年,正月是角,太陰值年,正月是室。順數(shù)十二月,每月值一星,余傲此。---引自四庫全書 此訣解為看其年二十八宿那一禽宿值年,根據(jù)其宿五行決定那一宿起正月的月禽。如2002年壬午為箕宿值日,箕屬水五行,根據(jù)“水騎?!闭聻榕=鹧蛑翟?,二月為女土蝠值 這里要特別注意 月的支順序是 “寅”, “卯”, “辰”, “巳”, “午”, “未”, “申”, “酉”, “戌”, “亥”, “子”, “丑” 即陰歷的11月是子月,即甲子月是11月,不是正月 - 日禽起例
“七元禽星會者稀,虛奎畢鬼翼氏箕,但將甲子從頭數(shù),元元相續(xù)報君知” 日有六十,宿有二十八,只有通過七周期四百二十日而一周,依上決一元甲子起虛宿,二元甲子起奎木狼,依法處理此類推。
數(shù)學的計算規(guī)則: 因為420是60甲子和28宿的最小公倍數(shù),所以二十八宿有七元甲子共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、七元時禽起例 七元禽星會者稀,日翼月虛火鬼居,水箕朩畢金氏位,土宿還從奎上推。
紫白飛星 三元九運每元各二十年,在此二十年中每年天體的運行位置不同,對地球的反照也不同,其人與事的吉兇各異,其應驗結果是有區(qū)別的,在二十年中九星輪三次運照地球,除五黃外共計二十四年,再減云父母三般以正三元,余二十一位,加上黃金歲差與磁偏角計二十年左右,因陰陽宅是注重空間與時間通氣的學問,氣流吉兇隨時都在變化,所以年紫白飛星對于風水的吉兇變化是有很大影響的,在判斷風水每年的吉兇,就必須運用年紫白飛星盤。 年月日時紫白(入中)計算辦法
- 年紫白(入中)計算辦法
方法1:方法1轉載自臣風易友 公元年份相加減1所得數(shù)字(9以內:計算技巧,滿9舍棄,逢0計9),此數(shù)的合十數(shù)。如2010年,2+1-1=2,10-2=8,所以2010年入中紫白為8;又如1998年,1+9+9+8-1=(8),10-8=2,所以1998年入中紫白為2。 另外,有很多流派會用到命卦,男命命卦即年入中紫白,女命命卦計算辦法為公元年份加4的9余數(shù)。(9余數(shù)即除以9所產生的余數(shù),余數(shù)為0時0即為9。 方法二: 方法描述 代碼實現(xiàn)
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數(shù)據(jù):
一白 九紫 八白 七赤 六白 五黃 四綠 三碧 二黑 一白
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.設年紫白(入中)為“年”,月數(shù)為“月”; 2.則月紫白(入中)的計算方法為:(3年-3-月)÷9所得的余數(shù)(余數(shù)≤0時,余數(shù)加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];
}
- 日紫白(入中)的計算方法
歌訣:日家紫白不難求,二十四氣六宮周,冬至陽生前后節(jié),順行甲子一宮移, 雨水便從七宮起,谷雨還從四綠推,陰生夏至九宮逆,處暑前后三碧是, 霜降六宮起甲子,順逆分明十二支,有是何星當值日,移入中宮順逆飛。 計算過程: 冬至后的第一個甲子日為一白、乙丑日為二黑、丙寅日為三碧,依次…… 雨水后的第一個甲子日為七赤、乙丑日為八白、丙寅日為九紫,依次…… 谷雨后的第一個甲子日為四碧、乙丑日為五黃、丙寅日為六白,依次…… 夏至后的第一個甲子日為九紫、乙丑日為八白,丙寅日為七赤,依次…… 處暑后的第一個甲子日為三碧、乙丑日為二黑,丙寅日為一白,依次…… 霜降后的第一個甲子日為六白、乙丑日為五黃,丙寅日為四綠,依次……
實現(xiàn)代碼如下
/**
1.冬至至立春末日:日干支序數(shù)÷9所得余數(shù)(除盡時余數(shù)為9);
*
2.雨水至清明末日:(日干支序數(shù)+6)÷9所得余數(shù)(除盡時余數(shù)為9);
*
3.谷雨至芒種末日:(日干支序數(shù)+3)÷9所得余數(shù)(除盡時余數(shù)為9);
*
4.夏至至立秋末日:日干支序數(shù)÷9所得余數(shù)(除盡時余數(shù)為9)的合十數(shù);
*
5.處暑至寒露末日:(日干支序數(shù)+6)÷9所得余數(shù)(除盡時余數(shù)為9)的合十數(shù);
*
6.霜降至大雪末日:(日干支序數(shù)+3)÷9所得余數(shù)(除盡時余數(shù)為9)的合十數(shù);
* '冬至', '小寒', '大寒', '立春',
* '雨水', '驚蟄', '春分', '清明',
* '谷雨', '立夏', '小滿', '芒種',
* '夏至', '小暑', '大暑', '立秋',
* '處暑', '白露', '秋分', '寒露',
* '霜降', '立冬', '小雪', '大雪'
*
* @param jq 二十四節(jié)氣索引
* @return 節(jié)氣分割索引
* 冬至至立春末日 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 節(jié)氣索引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/農歷二十四節(jié)氣/3405412?fromtitle=農歷節(jié)氣 http://blog.sina.com.cn/s/blog_45af90ec0101cd31.html http://blog.sina.com.cn/s/blog_7335b7250102w4k1.html http://www.woyoushebao.com/content/10/1128/19/414835_73198449.shtml http://baijiahao.baidu.com/s?id=1586355490773164695&wfr=spider&for=pc
|