1
0
mirror of synced 2026-04-17 22:08:42 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
6tail
c142ad7f6c v1.2.21 修复八字转阳历的错误;优化代码。 2022-01-02 17:31:31 +08:00
6tail
8d131aa31a Merge pull request #4 from Weidge/master
bug修复:反推八字Solar_fromBaZi函数,在阳历元旦后、农历新年前,反推失败的bug
2022-01-01 22:53:01 +08:00
Weidge
34469699a5 bug修复:反推八字Solar_fromBaZi函数,在阳历元旦后、农历新年前,反推失败的bug 2022-01-01 15:17:30 +08:00
2 changed files with 20 additions and 24 deletions

View File

@@ -27,13 +27,7 @@
fromYmdHms:function(y,m,d,hour,minute,second){ fromYmdHms:function(y,m,d,hour,minute,second){
return this._(new Date(y+'/'+m+'/'+d+' '+hour+':'+minute+':'+second),y,m,d); return this._(new Date(y+'/'+m+'/'+d+' '+hour+':'+minute+':'+second),y,m,d);
}, },
getDaysBetween:function(date0, date1){ getDaysBetweenYmd:function(ay, am, ad, by, bm, bd){
var ay = date0.getFullYear();
var by = date1.getFullYear();
var am = date0.getMonth() + 1;
var bm = date1.getMonth() + 1;
var ad = date0.getDate();
var bd = date1.getDate();
var n; var n;
var days; var days;
var i; var i;
@@ -55,6 +49,9 @@
n = days; n = days;
} }
return n; return n;
},
getDaysBetween:function(date0, date1){
return this.getDaysBetweenYmd(date0.getFullYear(), date0.getMonth() + 1, date0.getDate(), date1.getFullYear(), date1.getMonth() + 1, date1.getDate());
} }
}; };
})(); })();
@@ -304,7 +301,7 @@
if(offsetYear<0){ if(offsetYear<0){
offsetYear = offsetYear+60; offsetYear = offsetYear+60;
} }
var startYear = today.getYear() - offsetYear; var startYear = lunar.getYear() - offsetYear;
var hour = 0; var hour = 0;
var timeZhi = timeGanZhi.substr(1); var timeZhi = timeGanZhi.substr(1);
for(var i=0,j=LunarUtil.ZHI.length;i<j;i++){ for(var i=0,j=LunarUtil.ZHI.length;i<j;i++){
@@ -366,7 +363,7 @@
fromYmdHms:function(y,m,d,hour,minute,second){return _fromYmdHms(y,m,d,hour,minute,second);}, fromYmdHms:function(y,m,d,hour,minute,second){return _fromYmdHms(y,m,d,hour,minute,second);},
fromDate:function(date){return _fromDate(date);}, fromDate:function(date){return _fromDate(date);},
fromJulianDay:function(julianDay){return _fromJulianDay(julianDay);}, fromJulianDay:function(julianDay){return _fromJulianDay(julianDay);},
fromBaZi:function(yearGanZhi,monthGanZhi,dayGanZhi,timeGanZhi){return _fromBaZi(yearGanZhi,monthGanZhi,dayGanZhi,timeGanZhi);} fromBaZi:function(yearGanZhi,monthGanZhi,dayGanZhi,timeGanZhi,sect,baseYear){return _fromBaZi(yearGanZhi,monthGanZhi,dayGanZhi,timeGanZhi,sect,baseYear);}
}; };
})(); })();
var Lunar = (function(){ var Lunar = (function(){
@@ -527,22 +524,19 @@
return o; return o;
}; };
var _fromDate = function(date){ var _fromDate = function(date){
var c = ExactDate.fromYmd(date.getFullYear(),date.getMonth()+1,date.getDate()); var currentYear = date.getFullYear();
var currentMonth = date.getMonth() + 1;
var currentDay = date.getDate();
var lunarYear = 0; var lunarYear = 0;
var lunarMonth = 0; var lunarMonth = 0;
var lunarDay = 0; var lunarDay = 0;
var y = c.getFullYear(); var ly = LunarYear.fromYear(currentYear);
var ly = LunarYear.fromYear(y);
var lms = ly.getMonths(); var lms = ly.getMonths();
for (var i = 0, j = lms.length; i < j; i++) { for (var i = 0, j = lms.length; i < j; i++) {
var m = lms[i]; var m = lms[i];
// 初一 // 初一
var firstDay = Solar.fromJulianDay(m.getFirstJulianDay()).getCalendar(); var firstDay = Solar.fromJulianDay(m.getFirstJulianDay());
firstDay.setHours(0); var days = ExactDate.getDaysBetweenYmd(firstDay.getYear(), firstDay.getMonth(), firstDay.getDay(), currentYear, currentMonth, currentDay);
firstDay.setMinutes(0);
firstDay.setSeconds(0);
firstDay.setMilliseconds(0);
var days = ExactDate.getDaysBetween(firstDay, c);
if (days < m.getDayCount()) { if (days < m.getDayCount()) {
lunarYear = m.getYear(); lunarYear = m.getYear();
lunarMonth = m.getMonth(); lunarMonth = m.getMonth();
@@ -1159,9 +1153,9 @@
var dongZhiIndex = LunarUtil.getJiaZiIndex(dongZhi.getLunar().getDayInGanZhi()); var dongZhiIndex = LunarUtil.getJiaZiIndex(dongZhi.getLunar().getDayInGanZhi());
var dongZhiIndex2 = LunarUtil.getJiaZiIndex(dongZhi2.getLunar().getDayInGanZhi()); var dongZhiIndex2 = LunarUtil.getJiaZiIndex(dongZhi2.getLunar().getDayInGanZhi());
var xiaZhiIndex = LunarUtil.getJiaZiIndex(xiaZhi.getLunar().getDayInGanZhi()); var xiaZhiIndex = LunarUtil.getJiaZiIndex(xiaZhi.getLunar().getDayInGanZhi());
var solarShunBai = null; var solarShunBai;
var solarShunBai2 = null; var solarShunBai2;
var solarNiZi = null; var solarNiZi;
if (dongZhiIndex>29) { if (dongZhiIndex>29) {
solarShunBai = dongZhi.next(60 - dongZhiIndex); solarShunBai = dongZhi.next(60 - dongZhiIndex);
} else { } else {
@@ -1206,8 +1200,7 @@
start = asc ? 3 : 5; start = asc ? 3 : 5;
} }
var index = asc ? start + this._p.timeZhiIndex : start + 9 - this._p.timeZhiIndex; var index = asc ? start + this._p.timeZhiIndex : start + 9 - this._p.timeZhiIndex;
var offset = index % 9; return NineStar.fromIndex(index % 9);
return NineStar.fromIndex(offset);
}, },
getSolar:function(){ getSolar:function(){
return this._p.solar; return this._p.solar;
@@ -2577,6 +2570,9 @@
days += this.getDaysOfMonth(year, i); days += this.getDaysOfMonth(year, i);
} }
days += day; days += day;
if (1582 === year && 10 === month && day >= 15) {
days -= 10;
}
return days; return days;
}, },
getWeeksOfMonth:function(year,month,start){ getWeeksOfMonth:function(year,month,start){

View File

@@ -1,6 +1,6 @@
{ {
"name": "lunar-javascript", "name": "lunar-javascript",
"version": "1.2.20", "version": "1.2.21",
"description": "lunar is a calendar library for Solar and Chinese Lunar.", "description": "lunar is a calendar library for Solar and Chinese Lunar.",
"main": "index.js", "main": "index.js",
"scripts": { "scripts": {