From 709ceaf3d7757e6bc57644c5bfd0ff5c0038398d Mon Sep 17 00:00:00 2001 From: 6tail <6tail@6tail.cn> Date: Mon, 6 Apr 2020 18:45:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=98=9F=E5=AE=BF=E5=90=89?= =?UTF-8?q?=E5=87=B6=EF=BC=9B=E5=A2=9E=E5=8A=A0=E6=98=9F=E5=AE=BF=E6=AD=8C?= =?UTF-8?q?=E8=AF=80=EF=BC=9B=E5=A2=9E=E5=8A=A0=E6=94=AF=E6=8C=81=E6=97=B6?= =?UTF-8?q?=E8=BE=B0=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 +-- README_EN.md | 4 +-- lunar.js | 91 +++++++++++++++++++++++++++++++++++++++++++++++----- 3 files changed, 87 insertions(+), 12 deletions(-) diff --git a/README.md b/README.md index 4677153..cd90709 100644 --- a/README.md +++ b/README.md @@ -25,8 +25,8 @@ lunar是一个无依赖的支持阳历和阴历的日历工具库。 输出结果: - 1986-05-29 星期四 双子座 - 壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东] + 1986-05-29 00:00 星期四 双子座 + 壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子时 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东] ## 文档 diff --git a/README_EN.md b/README_EN.md index a1653dc..82fd63e 100644 --- a/README_EN.md +++ b/README_EN.md @@ -25,8 +25,8 @@ lunar is a calendar library for Solar and Chinese Lunar. Output: - 1986-05-29 星期四 双子座 - 壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东] + 1986-05-29 00:00 星期四 双子座 + 壹玖捌陆年肆月廿一 丙寅(虎)年 癸巳(蛇)月 癸酉(鸡)日 子时 纳音[炉中火 长流水 剑锋金] 星期四 北方玄武 斗木獬 彭祖百忌[癸不词讼理弱敌强 酉不会客醉坐颠狂] 喜神方位[巽](东南) 阳贵神方位[巽](东南) 阴贵神方位[震](正东) 福神方位[兑](正西) 财神方位[离](正南) 冲[(丁卯)兔] 煞[东] ## Documentation diff --git a/lunar.js b/lunar.js index ce00df4..6caf9b9 100644 --- a/lunar.js +++ b/lunar.js @@ -1,15 +1,17 @@ (function(W){ var Solar = (function(){ var _fromDate = function(date){ - return _fromYmd(date.getFullYear(),date.getMonth()+1,date.getDate()); + return _fromYmdHm(date.getFullYear(),date.getMonth()+1,date.getDate(),date.getHours(),date.getMinutes()); }; - var _fromYmd = function(y,m,d){ + var _fromYmdHm = function(y,m,d,hour,minute){ return { _p:{ year:y, month:m, day:d, - calendar:new Date(y+'/'+m+'/'+d) + hour:hour, + minute:minute, + calendar:new Date(y+'/'+m+'/'+d+' '+hour+':'+minute) }, getYear:function(){ return this._p.year; @@ -20,6 +22,12 @@ getDay:function(){ return this._p.day; }, + getHour:function(){ + return this._p.hour; + }, + getMinute:function(){ + return this._p.minute; + }, getWeek:function(){ return this._p.calendar.getDay(); }, @@ -80,7 +88,11 @@ return [this._p.year,(this._p.month<10?'0':'')+this._p.month,(this._p.day<10?'0':'')+this._p.day].join('-'); }, toFullString:function(){ + var hour = (this._p.hour<10?'0':'')+this._p.hour; + var minute = (this._p.minute<10?'0':'')+this._p.minute; var s = this.toString(); + s += ' '+hour; + s += ':'+minute; if(this.isLeapYear()){ s += ' 闰年'; } @@ -103,7 +115,8 @@ }; }; return { - fromYmd:function(y,m,d){return _fromYmd(y,m,d);}, + fromYmd:function(y,m,d){return _fromYmdHm(y,m,d,0,0);}, + fromYmdHm:function(y,m,d,hour,minute){return _fromYmdHm(y,m,d,hour,minute);}, fromDate:function(date){return _fromDate(date);} }; })(); @@ -113,6 +126,8 @@ var y = solar.getYear(); var m = solar.getMonth(); var d = solar.getDay(); + var hour = date.getHours(); + var minute = date.getMinutes(); var startY,startM,startD; var lunarY,lunarM,lunarD; if(y<2000){ @@ -147,9 +162,9 @@ if(lunarM===1) lunarY++; lastDate = LunarUtil.getDaysOfMonth(lunarY,lunarM); } - return _fromYmd(lunarY,lunarM,lunarD,solar); + return _fromYmdHm(lunarY,lunarM,lunarD,hour,minute,solar); }; - var _fromYmd = function(y,m,d,solar){ + var _fromYmdHm = function(y,m,d,hour,minute,solar){ var dayOffset = LunarUtil.computeAddDays(y,m,d); var addDays = (dayOffset + LunarUtil.BASE_DAY_GANZHI_INDEX)%60; var dayGanIndex = addDays%10; @@ -159,6 +174,8 @@ year:y, month:m, day:d, + hour:hour, + minute:minute, dayOffset:dayOffset, dayGanIndex:dayGanIndex, dayZhiIndex:dayZhiIndex, @@ -179,7 +196,7 @@ break; } } - var date = new Date(SolarUtil.BASE_YEAR+'/'+SolarUtil.BASE_MONTH+'/'+SolarUtil.BASE_DAY); + var date = new Date(SolarUtil.BASE_YEAR+'/'+SolarUtil.BASE_MONTH+'/'+SolarUtil.BASE_DAY+' '+this._p.hour+':'+this._p.minute); date.setDate(date.getDate()+diff); return Solar.fromDate(date); }, @@ -229,6 +246,29 @@ getDayInGanZhi:function(){ return this.getDayGan()+this.getDayZhi(); }, + getTimeGan:function(){ + var zhi = this.getTimeZhi(); + for(var i=1,j=LunarUtil.ZHI.length;i5){ + hm = hm.substring(0,5); + } + var x = 2; + for(var i=1;i<22;i+=2){ + if(hm>=((i<10?"0":"")+i+":00")&&hm<=((i+1<10?"0":"")+(i+1)+":59")){ + return this.ZHI[x]; + } + x++; + } + return this.ZHI[1]; } }; })();