UNPKG

@iro/calendar

Version:

lunar is a calendar library for Solar and Chinese Lunar.

90 lines 3.11 kB
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