diff --git a/__tests__/Solar.test.js b/__tests__/Solar.test.js index 48e0599..b82bb90 100644 --- a/__tests__/Solar.test.js +++ b/__tests__/Solar.test.js @@ -5,7 +5,7 @@ test('test', () => { expect(solar.toString()).toBe('2019-05-01'); expect(solar.toFullString()).toBe('2019-05-01 00:00:00 星期三 (劳动节) 金牛座'); expect(solar.getLunar().toString()).toBe('二〇一九年三月廿七'); - expect(solar.getLunar().toFullString()).toBe('二〇一九年三月廿七 己亥(猪)年 戊辰(龙)月 戊戌(狗)日 子(鼠)时 纳音[平地木 大林木 平地木 桑柘木] 星期三 (七殿泰山王诞) 西方白虎 星宿[参水猿](吉) 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 煞[北]'); + expect(solar.getLunar().toFullString()).toBe('二〇一九年三月廿七 己亥(猪)年 戊辰(龙)月 戊戌(狗)日 子(鼠)时 纳音[平地木 大林木 平地木 桑柘木] 星期三 西方白虎 星宿[参水猿](吉) 彭祖百忌[戊不受田田主不祥 戌不吃犬作怪上床] 喜神方位[巽](东南) 阳贵神方位[艮](东北) 阴贵神方位[坤](西南) 福神方位[坎](正北) 财神方位[坎](正北) 冲[(壬辰)龙] 煞[北]'); }); test('1', () => { diff --git a/index.js b/index.js index 86fd459..5baf239 100644 --- a/index.js +++ b/index.js @@ -1,8 +1,9 @@ -const {Solar, Lunar, NineStar, EightChar, SolarWeek, SolarMonth, SolarSeason, SolarHalfYear, SolarYear, LunarMonth, LunarYear, LunarTime, ShouXingUtil, SolarUtil, LunarUtil, HolidayUtil} = require('./lunar.js') +const {Solar, Lunar, Foto, NineStar, EightChar, SolarWeek, SolarMonth, SolarSeason, SolarHalfYear, SolarYear, LunarMonth, LunarYear, LunarTime, ShouXingUtil, SolarUtil, LunarUtil, FotoUtil, HolidayUtil} = require('./lunar.js') module.exports = { Solar: Solar, Lunar: Lunar, + Foto: Foto, NineStar: NineStar, EightChar: EightChar, SolarWeek: SolarWeek, @@ -16,5 +17,6 @@ module.exports = { ShouXingUtil: ShouXingUtil, SolarUtil: SolarUtil, LunarUtil: LunarUtil, + FotoUtil: FotoUtil, HolidayUtil: HolidayUtil } diff --git a/lunar.js b/lunar.js index 5e7019d..c6ab633 100644 --- a/lunar.js +++ b/lunar.js @@ -139,16 +139,6 @@ } return l; }, - getOtherFestivals:function(){ - var l = []; - var fs = SolarUtil.OTHER_FESTIVAL[this._p.month+'-'+this._p.day]; - if(fs){ - for(var i=0,j=fs.length;i0){ s += ' ['+jq+']'; @@ -1487,7 +1463,8 @@ l.push(LunarTime.fromYmdHms(this._p.year, this._p.month, this._p.day, (i+1)*2-1, 0, 0)); } return l; - } + }, + getFoto:function(){return Foto.fromLunar(this);} }; }; return { @@ -2381,7 +2358,6 @@ GONG:{'角':'东','井':'南','奎':'西','斗':'北','亢':'东','鬼':'南','娄':'西','牛':'北','氐':'南','柳':'南','胃':'西','女':'北','房':'东','星':'南','昴':'西','虚':'北','心':'东','张':'南','毕':'西','危':'北','尾':'东','翼':'南','觜':'西','室':'北','箕':'东','轸':'南','参':'西','壁':'北' }, SHOU:{'东':'青龙','南':'朱雀','西':'白虎','北':'玄武'}, FESTIVAL:{'1-1':'春节','1-15':'元宵节','2-2':'龙头节','5-5':'端午节','7-7':'七夕节','8-15':'中秋节','9-9':'重阳节','12-8':'腊八节'}, - OTHER_FESTIVAL:{'1-1':['弥勒佛圣诞'],'1-8':['五殿阎罗天子诞'],'1-9':['玉皇上帝诞'],'1-13':['杨公忌'],'2-1':['一殿秦广王诞'],'2-2':['福德土地正神诞'],'2-3':['文昌帝君诞'],'2-6':['东华帝君诞'],'2-8':['释迦牟尼佛出家'],'2-11':['杨公忌'],'2-15':['释迦牟尼佛涅槃','太上老君诞'],'2-17':['东方杜将军诞'],'2-18':['四殿五官王诞','至圣先师孔子讳辰'],'2-19':['观音大士诞'],'2-21':['普贤菩萨诞'],'3-1':['二殿楚江王诞'],'3-3':['玄天上帝诞'],'3-8':['六殿卞城王诞'],'3-9':['杨公忌'],'3-12':['中央五道诞'],'3-15':['玄坛诞','昊天上帝诞'],'3-16':['准提菩萨诞'],'3-18':['中岳大帝诞','后土娘娘诞'],'3-20':['子孙娘娘诞'],'3-27':['七殿泰山王诞'],'3-28':['苍颉至圣先师诞'],'4-1':['八殿都市王诞'],'4-4':['文殊菩萨诞'],'4-7':['杨公忌'],'4-8':['释迦牟尼佛诞','九殿平等王诞'],'4-14':['纯阳祖师诞'],'4-15':['钟离祖师诞'],'4-17':['十殿转轮王诞'],'4-18':['紫徽大帝诞'],'4-20':['眼光圣母诞'],'5-1':['南极长生大帝诞'],'5-5':['杨公忌'],'5-8':['南方五道诞'],'5-11':['天下都城隍诞'],'5-12':['炳灵公诞'],'5-13':['关圣降'],'5-16':['天地元气造化万物之辰'],'5-18':['张天师诞'],'5-22':['孝娥神诞'],'6-3':['杨公忌'],'6-10':['金粟如来诞'],'6-13':['井泉龙王诞'],'6-19':['观音大士涅槃'],'6-23':['南方火神诞'],'6-24':['雷祖诞','关帝诞'],'7-1':['杨公忌'],'7-7':['魁星诞'],'7-12':['长真谭真人诞'],'7-13':['大势至菩萨诞'],'7-15':['中元节'],'7-18':['西王母诞'],'7-19':['太岁诞'],'7-22':['增福财神诞'],'7-29':['杨公忌'],'7-30':['地藏菩萨诞'],'8-1':['许真君诞'],'8-3':['司命灶君诞'],'8-5':['雷声大帝诞'],'8-10':['北斗大帝诞'],'8-12':['西方五道诞'],'8-16':['天曹掠刷真君降'],'8-18':['天人兴福之辰'],'8-23':['汉恒候张显王诞'],'8-24':['灶君夫人诞'],'8-27':['至圣先师孔子诞','杨公忌'],'9-1':['北斗九星降'],'9-2':['北斗九星降'],'9-3':['北斗九星降','五瘟神诞'],'9-4':['北斗九星降'],'9-5':['北斗九星降'],'9-6':['北斗九星降'],'9-7':['北斗九星降'],'9-8':['北斗九星降'],'9-9':['北斗九星降','酆都大帝诞'],'9-13':['孟婆尊神诞'],'9-17':['金龙四大王诞'],'9-19':['观世音菩萨出家'],'9-25':['杨公忌'],'9-30':['药师琉璃光佛诞'],'10-1':['寒衣节'],'10-3':['三茅诞'],'10-5':['达摩祖师诞'],'10-8':['佛涅槃日'],'10-15':['下元节'],'10-23':['杨公忌'],'10-27':['北极紫薇大帝降'],'11-4':['至圣先师孔子诞'],'11-6':['西岳大帝诞'],'11-11':['太乙救苦天尊诞'],'11-17':['阿弥陀佛诞'],'11-19':['太阳日宫诞'],'11-21':['杨公忌'],'11-23':['张仙诞'],'11-25':['掠刷大夫降'],'11-26':['北方五道诞'],'12-8':['释迦如来成佛之辰'],'12-16':['南岳大帝诞'],'12-19':['杨公忌'],'12-21':['天猷上帝诞'],'12-23':['小年','五岳神降'],'12-29':['华严菩萨诞']}, CHONG:{'子':'午','丑':'未','寅':'申','卯':'酉','辰':'戌','巳':'亥','午':'子','未':'丑','申':'寅','酉':'卯','戌':'辰','亥':'巳'}, CHONG_GAN:{'甲':'戊','乙':'己','丙':'庚','丁':'辛','戊':'壬','己':'癸','庚':'甲','辛':'乙','壬':'丙','癸':'丁'}, CHONG_GAN_BAD:{'庚':'甲','辛':'乙','壬':'丙','癸':'丁'}, @@ -3425,12 +3401,373 @@ fromYmdHms:function(lunarYear,lunarMonth,lunarDay,hour,minute,second){return _fromYmdHms(lunarYear,lunarMonth,lunarDay,hour,minute,second);}, }; })(); + var FotoUtil = (function(){ + var _f=function(name,result,everyMonth,remark){ + return { + _p:{ + name:name, + result:result?result:'', + everyMonth:everyMonth?true:false, + remark:remark?remark:'' + }, + getName:function(){return this._p.name;}, + getResult:function(){return this._p.result;}, + isEveryMonth:function(){return this._p.everyMonth;}, + getRemark:function(){return this._p.remark;}, + toString:function(){ + var l = [this._p.name]; + if(this._p.result) { + l.push(this._p.result); + } + if(this._p.remark) { + l.push(this._p.remark); + } + return l.join(' '); + } + }; + }; + var dj='犯者夺纪',js='犯者减寿',ss='犯者损寿',xl='犯者削禄夺纪',jw='犯者三年内夫妇俱亡'; + var _y=_f('杨公忌'), + _t=_f('四天王巡行', '', true), + _d=_f('斗降', dj, true), + _s=_f('月朔', dj, true), + _w=_f('月望', dj, true), + _h=_f('月晦', js, true), + _l=_f('雷斋日', js, true), + _j=_f('九毒日', '犯者夭亡,奇祸不测'), + _r=_f('人神在阴', '犯者得病', true, '宜先一日即戒'), + _m=_f('司命奏事', js, true, '如月小,即戒廿九'), + _hh=_f('月晦', js, true, '如月小,即戒廿九'); + return { + DAY_ZHAI_GUAN_YIN:['1-8','2-7','2-9','2-19','3-3','3-6','3-13','4-22','5-3','5-17','6-16','6-18','6-19','6-23','7-13','8-16','9-19','9-23','10-2','11-19','11-24','12-25'], + FESTIVAL:{ + '1-1': [_f('天腊,玉帝校世人神气禄命', xl), _s], + '1-3': [_f('万神都会', dj), _d], + '1-5': [_f('五虚忌')], + '1-6': [_f('六耗忌'), _l], + '1-7': [_f('上会日', ss)], + '1-8': [_f('五殿阎罗天子诞', dj), _t], + '1-9': [_f('玉皇上帝诞', dj)], + '1-13': [_y], + '1-14': [_f('三元降', js), _t], + '1-15': [_f('三元降', js), _f('上元神会', dj), _w, _t], + '1-16': [_f('三元降', js)], + '1-19': [_f('长春真人诞')], + '1-23': [_f('三尸神奏事'), _t], + '1-25': [_h, _f('天地仓开日', '犯者损寿,子带疾')], + '1-27': [_d], + '1-28': [_r], + '1-29': [_t], + '1-30': [_hh, _m, _t], + '2-1': [_f('一殿秦广王诞', dj), _s], + '2-2': [_f('万神都会', dj), _f('福德土地正神诞', '犯者得祸')], + '2-3': [_f('文昌帝君诞', xl), _d], + '2-6': [_f('东华帝君诞'), _l], + '2-8': [_f('释迦牟尼佛出家', dj), _f('三殿宋帝王诞', dj), _f('张大帝诞', dj), _t], + '2-11': [_y], + '2-14': [_t], + '2-15': [_f('释迦牟尼佛涅槃', xl), _f('太上老君诞', xl), _f('月望', xl, true), _t], + '2-17': [_f('东方杜将军诞')], + '2-18': [_f('四殿五官王诞', xl), _f('至圣先师孔子讳辰', xl)], + '2-19': [_f('观音大士诞', dj)], + '2-21': [_f('普贤菩萨诞')], + '2-23': [_t], + '2-25': [_h], + '2-27': [_d], + '2-28': [_r], + '2-29': [_t], + '2-30': [_hh, _m, _t], + '3-1': [_f('二殿楚江王诞', dj), _s], + '3-3': [_f('玄天上帝诞', dj), _d], + '3-6': [_l], + '3-8': [_f('六殿卞城王诞', dj), _t], + '3-9': [_f('牛鬼神出', '犯者产恶胎'), _y], + '3-12': [_f('中央五道诞')], + '3-14': [_t], + '3-15': [_f('昊天上帝诞', dj), _f('玄坛诞', dj), _w, _t], + '3-16': [_f('准提菩萨诞', dj)], + '3-19': [_f('中岳大帝诞'), _f('后土娘娘诞'), _f('三茅降')], + '3-20': [_f('天地仓开日', ss), _f('子孙娘娘诞')], + '3-23': [_t], + '3-25': [_h], + '3-27': [_f('七殿泰山王诞'), _d], + '3-28': [_r, _f('苍颉至圣先师诞', xl), _f('东岳大帝诞')], + '3-29': [_t], + '3-30': [_hh, _m, _t], + '4-1': [_f('八殿都市王诞', dj), _s], + '4-3': [_d], + '4-4': [_f('万神善会', '犯者失瘼夭胎'), _f('文殊菩萨诞')], + '4-6': [_l], + '4-7': [_f('南斗、北斗、西斗同降', js), _y], + '4-8': [_f('释迦牟尼佛诞', dj), _f('万神善会', '犯者失瘼夭胎'), _f('善恶童子降', '犯者血死'), _f('九殿平等王诞'), _t], + '4-14': [_f('纯阳祖师诞', js), _t], + '4-15': [_w, _f('钟离祖师诞'), _t], + '4-16': [_f('天地仓开日', ss)], + '4-17': [_f('十殿转轮王诞', dj)], + '4-18': [_f('天地仓开日', ss), _f('紫徽大帝诞', ss)], + '4-20': [_f('眼光圣母诞')], + '4-23': [_t], + '4-25': [_h], + '4-27': [_d], + '4-28': [_r], + '4-29': [_t], + '4-30': [_hh, _m, _t], + '5-1': [_f('南极长生大帝诞', dj), _s], + '5-3': [_d], + '5-5': [_f('地腊', xl), _f('五帝校定生人官爵', xl), _j, _y], + '5-6': [_j, _l], + '5-7': [_j], + '5-8': [_f('南方五道诞'), _t], + '5-11': [_f('天地仓开日', ss),_f('天下都城隍诞')], + '5-12': [_f('炳灵公诞')], + '5-13': [_f('关圣降', xl)], + '5-14': [_f('夜子时为天地交泰', jw), _t], + '5-15': [_w, _j, _t], + '5-16': [_f('九毒日', jw), _f('天地元气造化万物之辰', jw)], + '5-17': [_j], + '5-18': [_f('张天师诞')], + '5-22': [_f('孝娥神诞', dj)], + '5-23': [_t], + '5-25': [_j, _h], + '5-26': [_j], + '5-27': [_j, _d], + '5-28': [_r], + '5-29': [_t], + '5-30': [_hh, _m, _t], + '6-1': [_s], + '6-3': [_f('韦驮菩萨圣诞'), _d, _y], + '6-5': [_f('南赡部洲转大轮', ss)], + '6-6': [_f('天地仓开日', ss), _l], + '6-8': [_t], + '6-10': [_f('金粟如来诞')], + '6-14': [_t], + '6-15': [_w, _t], + '6-19': [_f('观世音菩萨成道', dj)], + '6-23': [_f('南方火神诞', '犯者遭回禄'), _t], + '6-24': [_f('雷祖诞', xl), _f('关帝诞', xl)], + '6-25': [_h], + '6-27': [_d], + '6-28': [_r], + '6-29': [_t], + '6-30': [_hh, _m, _t], + '7-1': [_s, _y], + '7-3': [_d], + '7-5': [_f('中会日', ss, false, '一作初七')], + '7-6': [_l], + '7-7': [_f('道德腊', xl), _f('五帝校生人善恶', xl), _f('魁星诞', xl)], + '7-8': [_t], + '7-10': [_f('阴毒日', '', false, '大忌')], + '7-12': [_f('长真谭真人诞')], + '7-13': [_f('大势至菩萨诞', js)], + '7-14': [_f('三元降', js), _t], + '7-15': [_w, _f('三元降', dj),_f('地官校籍', dj), _t], + '7-16': [_f('三元降', js)], + '7-18': [_f('西王母诞', dj)], + '7-19': [_f('太岁诞', dj)], + '7-22': [_f('增福财神诞', xl)], + '7-23': [_t], + '7-25': [_h], + '7-27': [_d], + '7-28': [_r], + '7-29': [_y, _t], + '7-30': [_f('地藏菩萨诞', dj), _hh, _m, _t], + '8-1': [_s, _f('许真君诞')], + '8-3': [_d, _f('北斗诞', xl), _f('司命灶君诞', '犯者遭回禄')], + '8-5': [_f('雷声大帝诞', dj)], + '8-6': [_l], + '8-8': [_t], + '8-10': [_f('北斗大帝诞')], + '8-12': [_f('西方五道诞')], + '8-14': [_t], + '8-15': [_w, _f('太明朝元', '犯者暴亡', false, '宜焚香守夜'), _t], + '8-16': [_f('天曹掠刷真君降', '犯者贫夭')], + '8-18': [_f('天人兴福之辰', '', false, '宜斋戒,存想吉事')], + '8-23': [_f('汉恒候张显王诞'), _t], + '8-24': [_f('灶君夫人诞')], + '8-25': [_h], + '8-27': [_d, _f('至圣先师孔子诞', xl), _y], + '8-28': [_r, _f('四天会事')], + '8-29': [_t], + '8-30': [_f('诸神考校', '犯者夺算'), _hh, _m, _t], + '9-1': [_s, _f('南斗诞', xl), _f('北斗九星降世', dj, false, '此九日俱宜斋戒')], + '9-3': [_d, _f('五瘟神诞')], + '9-6': [_l], + '9-8': [_t], + '9-9': [_f('斗母诞', xl), _f('酆都大帝诞'), _f('玄天上帝飞升')], + '9-10': [_f('斗母降', dj)], + '9-11': [_f('宜戒')], + '9-13': [_f('孟婆尊神诞')], + '9-14': [_t], + '9-15': [_w, _t], + '9-17': [_f('金龙四大王诞', '犯者遭水厄')], + '9-19': [_f('日宫月宫会合', js), _f('观世音菩萨诞', js)], + '9-23': [_t], + '9-25': [_h, _y], + '9-27': [_d], + '9-28': [_r], + '9-29': [_t], + '9-30': [_f('药师琉璃光佛诞', '犯者危疾'), _hh, _m, _t], + '10-1': [_s, _f('民岁腊', dj), _f('四天王降', '犯者一年内死')], + '10-3': [_d, _f('三茅诞')], + '10-5': [_f('下会日', js), _f('达摩祖师诞', js)], + '10-6': [_l, _f('天曹考察', dj)], + '10-8': [_f('佛涅槃日', '', false, '大忌色欲'), _t], + '10-10': [_f('四天王降', '犯者一年内死')], + '10-11': [_f('宜戒')], + '10-14': [_f('三元降', js), _t], + '10-15': [_w, _f('三元降', dj), _f('下元水府校籍', dj), _t], + '10-16': [_f('三元降', js), _t], + '10-23': [_y, _t], + '10-25': [_h], + '10-27': [_d, _f('北极紫徽大帝降')], + '10-28': [_r], + '10-29': [_t], + '10-30': [_hh, _m, _t], + '11-1': [_s], + '11-3': [_d], + '11-4': [_f('至圣先师孔子诞', xl)], + '11-6': [_f('西岳大帝诞')], + '11-8': [_t], + '11-11': [_f('天地仓开日', dj), _f('太乙救苦天尊诞', dj)], + '11-14': [_t], + '11-15': [_f('月望', '上半夜犯男死 下半夜犯女死'), _f('四天王巡行', '上半夜犯男死 下半夜犯女死')], + '11-17': [_f('阿弥陀佛诞')], + '11-19': [_f('太阳日宫诞', '犯者得奇祸')], + '11-21': [_y], + '11-23': [_f('张仙诞', '犯者绝嗣'), _t], + '11-25': [_f('掠刷大夫降', '犯者遭大凶'), _h], + '11-26': [_f('北方五道诞')], + '11-27': [_d], + '11-28': [_r], + '11-29': [_t], + '11-30': [_hh, _m, _t], + '12-1': [_s], + '12-3': [_d], + '12-6': [_f('天地仓开日', js), _l], + '12-7': [_f('掠刷大夫降', '犯者得恶疾')], + '12-8': [_f('王侯腊', dj), _f('释迦如来成佛之辰'), _t, _f('初旬内戊日,亦名王侯腊', dj)], + '12-12': [_f('太素三元君朝真')], + '12-14': [_t], + '12-15': [_w, _t], + '12-16': [_f('南岳大帝诞')], + '12-19': [_y], + '12-20': [_f('天地交道', '犯者促寿')], + '12-21': [_f('天猷上帝诞')], + '12-23': [_f('五岳诞降'), _t], + '12-24': [_f('司今朝天奏人善恶', '犯者得大祸')], + '12-25': [_f('三清玉帝同降,考察善恶', '犯者得奇祸'), _h], + '12-27': [_d], + '12-28': [_r], + '12-29': [_f('华严菩萨诞'), _t], + '12-30': [_f('诸神下降,察访善恶', '犯者男女俱亡')] + } + } + })(); + var Foto = (function(){ + var _fromYmdHms=function(y,m,d,hour,minute,second){ + return _fromLunar(Lunar.fromYmdHms(y+Foto.DEAD_YEAR-1,m,d,hour,minute,second)); + }; + var _fromLunar=function(lunar){ + return { + _p: { + lunar: lunar + }, + getLunar:function(){return this._p.lunar;}, + getYear:function(){ + var sy = this._p.lunar.getSolar().getYear(); + var y = sy-Foto.DEAD_YEAR; + if(sy==this._p.lunar.getYear()){ + y++; + } + return y; + }, + getMonth:function(){return this._p.lunar.getMonth();}, + getDay:function(){return this._p.lunar.getDay();}, + getYearInChinese:function(){ + var y = this.getYear()+''; + var s = ''; + var zero = '0'.charCodeAt(0); + for(var i=0,j=y.length;i