@iro/calendar
Version:
lunar is a calendar library for Solar and Chinese Lunar.
90 lines • 3.11 kB
JavaScript
import { LunarUtil } from './LunarUtil';
import { DaYun } from './DaYun';
var Yun = (function () {
function Yun(lunar, gender, sect) {
if (sect === void 0) { sect = 1; }
this._gender = gender;
this._lunar = lunar;
var yang = 0 === lunar.getYearGanIndexExact() % 2;
var man = 1 === gender;
var forward = (yang && man) || (!yang && !man);
this._forward = forward;
var prev = lunar.getPrevJie();
var next = lunar.getNextJie();
var current = lunar.getSolar();
var start = forward ? current : prev.getSolar();
var end = forward ? next.getSolar() : current;
var year;
var month;
var day;
var hour = 0;
if (2 === sect) {
var minutes = end.subtractMinute(start);
year = Math.floor(minutes / 4320);
minutes -= year * 4320;
month = Math.floor(minutes / 360);
minutes -= month * 360;
day = Math.floor(minutes / 12);
minutes -= day * 12;
hour = minutes * 2;
}
else {
var endTimeZhiIndex = (end.getHour() == 23) ? 11 : LunarUtil.getTimeZhiIndex(end.toYmdHms().substr(11, 5));
var startTimeZhiIndex = (start.getHour() == 23) ? 11 : LunarUtil.getTimeZhiIndex(start.toYmdHms().substr(11, 5));
var hourDiff = endTimeZhiIndex - startTimeZhiIndex;
var dayDiff = end.subtract(start);
if (hourDiff < 0) {
hourDiff += 12;
dayDiff--;
}
var monthDiff = Math.floor(hourDiff * 10 / 30);
month = dayDiff * 4 + monthDiff;
day = hourDiff * 10 - monthDiff * 30;
year = Math.floor(month / 12);
month = month - year * 12;
}
this._startYear = year;
this._startMonth = month;
this._startDay = day;
this._startHour = hour;
}
Yun.prototype.getGender = function () {
return this._gender;
};
Yun.prototype.getStartYear = function () {
return this._startYear;
};
Yun.prototype.getStartMonth = function () {
return this._startMonth;
};
Yun.prototype.getStartDay = function () {
return this._startDay;
};
Yun.prototype.getStartHour = function () {
return this._startHour;
};
Yun.prototype.isForward = function () {
return this._forward;
};
Yun.prototype.getLunar = function () {
return this._lunar;
};
Yun.prototype.getStartSolar = function () {
var solar = this._lunar.getSolar();
solar = solar.nextYear(this._startYear);
solar = solar.nextMonth(this._startMonth);
solar = solar.next(this._startDay);
return solar.nextHour(this._startHour);
};
Yun.prototype.getDaYun = function (n) {
if (n === void 0) { n = 10; }
var l = [];
for (var i = 0; i < n; i++) {
l.push(new DaYun(this, i));
}
return l;
};
return Yun;
}());
export { Yun };
//# sourceMappingURL=Yun.js.map