diff --git a/README.md b/README.md index 1e2db39..04c0d28 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ lunar是一款无第三方依赖的公历(阳历)和农历(阴历、老黄历) 输出结果: 1986-05-29 00:00:00 星期四 双子座 - 壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子(鼠)时 纳音[炉中火 长流水 剑锋金 海中金] 星期四 北方玄武 星宿[斗木獬](吉) 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东] + 壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子(鼠)时 纳音[炉中火 长流水 剑锋金 桑柘木] 星期四 北方玄武 星宿[斗木獬](吉) 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东] ## 文档 diff --git a/README_EN.md b/README_EN.md index bf5667d..334a3ee 100644 --- a/README_EN.md +++ b/README_EN.md @@ -55,7 +55,7 @@ lunar is a calendar library for Solar and Chinese Lunar. Output: 1986-05-29 00:00:00 星期四 双子座 - 壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子(鼠)时 纳音[炉中火 长流水 剑锋金 海中金] 星期四 北方玄武 星宿[斗木獬](吉) 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东] + 壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子(鼠)时 纳音[炉中火 长流水 剑锋金 桑柘木] 星期四 北方玄武 星宿[斗木獬](吉) 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东] ## Documentation diff --git a/lunar.js b/lunar.js index 78b89ae..0f03bf0 100644 --- a/lunar.js +++ b/lunar.js @@ -440,15 +440,32 @@ o['monthGanIndexExact'] = (indexExact+gOffsetExact)%10; o['monthZhiIndexExact'] = (indexExact+LunarUtil.BASE_MONTH_ZHI_INDEX)%12; }; - var _computeDay = function(o){ + var _computeDay = function(o,hour,minute){ var addDays = (o.dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60; - o['dayGanIndex'] = addDays%10; - o['dayZhiIndex'] = addDays%12; + var dayGanIndex = addDays%10; + var dayZhiIndex = addDays%12; + o['dayGanIndex'] = dayGanIndex; + o['dayZhiIndex'] = dayZhiIndex; + var dayGanExact = dayGanIndex; + var dayZhiExact = dayZhiIndex; + var hm = (hour<10?'0':'')+hour+':'+(minute<10?'0':'')+minute; + if(hm>='23:00'&&hm<='23:59'){ + dayGanExact++; + if(dayGanExact>=10){ + dayGanExact -= 10; + } + dayZhiExact++; + if(dayZhiExact>=12){ + dayZhiExact -= 12; + } + } + o['dayGanIndexExact'] = dayGanExact; + o['dayZhiIndexExact'] = dayZhiExact; }; var _computeTime = function(o,hour,minute){ var timeZhiIndex = LunarUtil.getTimeZhiIndex((hour<10?'0':'')+hour+':'+(minute<10?'0':'')+minute); - o['timeGanIndex'] = timeZhiIndex%10; o['timeZhiIndex'] = timeZhiIndex; + o['timeGanIndex'] = (o['dayGanIndexExact']%5*2+timeZhiIndex)%10; }; var _computeWeek = function(o){ o['weekIndex'] = (o.dayOffset+LunarUtil.BASE_WEEK_INDEX)%7; @@ -459,7 +476,7 @@ _computeJieQi(o,solar); _computeYear(o,solar,year); _computeMonth(o,solar); - _computeDay(o); + _computeDay(o,hour,minute); _computeTime(o,hour,minute); _computeWeek(o); return o; @@ -498,6 +515,8 @@ dayOffset:gz.dayOffset, dayGanIndex:gz.dayGanIndex, dayZhiIndex:gz.dayZhiIndex, + dayGanIndexExact:gz.dayGanIndexExact, + dayZhiIndexExact:gz.dayZhiIndexExact, monthGanIndex:gz.monthGanIndex, monthZhiIndex:gz.monthZhiIndex, monthGanIndexExact:gz.monthGanIndexExact, @@ -585,12 +604,21 @@ getDayGan:function(){ return LunarUtil.GAN[this._p.dayGanIndex+1]; }, + getDayGanExact:function(){ + return LunarUtil.GAN[this._p.dayGanIndexExact+1]; + }, getDayZhi:function(){ return LunarUtil.ZHI[this._p.dayZhiIndex+1]; }, + getDayZhiExact:function(){ + return LunarUtil.ZHI[this._p.dayZhiIndexExact+1]; + }, getDayInGanZhi:function(){ return this.getDayGan()+this.getDayZhi(); }, + getDayInGanZhiExact:function(){ + return this.getDayGanExact()+this.getDayZhiExact(); + }, getTimeGan:function(){ return LunarUtil.GAN[this._p.timeGanIndex+1]; }, @@ -778,12 +806,11 @@ return l; }, getBaZi:function(){ - var timeGan = LunarUtil.GAN[(this._p.dayGanIndex%5*12+this._p.timeZhiIndex)%10+1]; var l = []; l.push(this.getYearInGanZhiExact()); l.push(this.getMonthInGanZhiExact()); - l.push(this.getDayInGanZhi()); - l.push(timeGan+this.getTimeZhi()); + l.push(this.getDayInGanZhiExact()); + l.push(this.getTimeInGanZhi()); return l; }, getBaZiWuXing:function(){ diff --git a/package.json b/package.json index 4988eda..88cebb4 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "lunar-javascript", - "version": "1.0.3", + "version": "1.0.4", "description": "lunar is a calendar library for Solar and Chinese Lunar.", "main": "index.js", "scripts": {