@iro/calendar
Version:
lunar is a calendar library for Solar and Chinese Lunar.
171 lines • 6.55 kB
JavaScript
import { Dictionary } from './Dictionary';
import { Solar } from './Solar';
var SolarUtil = (function () {
function SolarUtil() {
}
SolarUtil.isLeapYear = function (year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
};
SolarUtil.getDaysOfMonth = function (year, month) {
if (1582 === year && 10 === month) {
return 21;
}
var m = month - 1;
var d = SolarUtil.DAYS_OF_MONTH[m];
if (m === 1 && SolarUtil.isLeapYear(year)) {
d++;
}
return d;
};
SolarUtil.getDaysOfYear = function (year) {
if (1582 === year) {
return 355;
}
return SolarUtil.isLeapYear(year) ? 366 : 365;
};
SolarUtil.getDaysInYear = function (year, month, day) {
var days = 0;
for (var i = 1; i < month; i++) {
days += SolarUtil.getDaysOfMonth(year, i);
}
var d = day;
if (1582 === year && 10 === month && day >= 15) {
if (day >= 15) {
d -= 10;
}
else if (day > 4) {
throw new Error("wrong solar year ".concat(year, " month ").concat(month, " day ").concat(day));
}
}
days += d;
return days;
};
SolarUtil.getWeeksOfMonth = function (year, month, start) {
return Math.ceil((SolarUtil.getDaysOfMonth(year, month) + Solar.fromYmd(year, month, 1).getWeek() - start) / 7);
};
SolarUtil.getDaysBetween = function (ay, am, ad, by, bm, bd) {
var n;
var days;
var i;
if (ay == by) {
n = SolarUtil.getDaysInYear(by, bm, bd) -
SolarUtil.getDaysInYear(ay, am, ad);
}
else if (ay > by) {
days = SolarUtil.getDaysOfYear(by) - SolarUtil.getDaysInYear(by, bm, bd);
for (i = by + 1; i < ay; i++) {
days += SolarUtil.getDaysOfYear(i);
}
days += SolarUtil.getDaysInYear(ay, am, ad);
n = -days;
}
else {
days = SolarUtil.getDaysOfYear(ay) - SolarUtil.getDaysInYear(ay, am, ad);
for (i = ay + 1; i < by; i++) {
days += SolarUtil.getDaysOfYear(i);
}
days += SolarUtil.getDaysInYear(by, bm, bd);
n = days;
}
return n;
};
SolarUtil.WEEK = ['日', '一', '二', '三', '四', '五', '六'];
SolarUtil.DAYS_OF_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
SolarUtil.XINGZUO = ['白羊', '金牛', '双子', '巨蟹', '狮子', '处女', '天秤', '天蝎', '射手', '摩羯', '水瓶', '双鱼'];
SolarUtil.FESTIVAL = new Dictionary([
['1-1', '元旦节'],
['2-14', '情人节'],
['3-8', '妇女节'],
['3-12', '植树节'],
['3-15', '消费者权益日'],
['4-1', '愚人节'],
['5-1', '劳动节'],
['5-4', '青年节'],
['6-1', '儿童节'],
['7-1', '建党节'],
['8-1', '建军节'],
['9-10', '教师节'],
['10-1', '国庆节'],
['10-31', '万圣节前夜'],
['11-1', '万圣节'],
['12-24', '平安夜'],
['12-25', '圣诞节']
]);
SolarUtil.OTHER_FESTIVAL = new Dictionary([
['1-8', ['周恩来逝世纪念日']],
['1-10', ['中国人民警察节', '中国公安110宣传日']],
['1-21', ['列宁逝世纪念日']],
['1-26', ['国际海关日']],
['2-2', ['世界湿地日']],
['2-4', ['世界抗癌日']],
['2-7', ['京汉铁路罢工纪念']],
['2-10', ['国际气象节']],
['2-19', ['邓小平逝世纪念日']],
['2-21', ['国际母语日']],
['2-24', ['第三世界青年日']],
['3-1', ['国际海豹日']],
['3-3', ['全国爱耳日']],
['3-5', ['周恩来诞辰纪念日', '中国青年志愿者服务日']],
['3-6', ['世界青光眼日']],
['3-12', ['孙中山逝世纪念日']],
['3-14', ['马克思逝世纪念日']],
['3-17', ['国际航海日']],
['3-18', ['全国科技人才活动日']],
['3-21', ['世界森林日', '世界睡眠日']],
['3-22', ['世界水日']],
['3-23', ['世界气象日']],
['3-24', ['世界防治结核病日']],
['4-2', ['国际儿童图书日']],
['4-7', ['世界卫生日']],
['4-22', ['列宁诞辰纪念日']],
['4-23', ['世界图书和版权日']],
['4-26', ['世界知识产权日']],
['5-3', ['世界新闻自由日']],
['5-5', ['马克思诞辰纪念日']],
['5-8', ['世界红十字日']],
['5-11', ['世界肥胖日']],
['5-25', ['525心理健康节']],
['5-27', ['上海解放日']],
['5-31', ['世界无烟日']],
['6-5', ['世界环境日']],
['6-6', ['全国爱眼日']],
['6-8', ['世界海洋日']],
['6-11', ['中国人口日']],
['6-14', ['世界献血日']],
['7-1', ['香港回归纪念日']],
['7-7', ['中国人民抗日战争纪念日']],
['7-11', ['世界人口日']],
['8-5', ['恩格斯逝世纪念日']],
['8-6', ['国际电影节']],
['8-12', ['国际青年日']],
['8-22', ['邓小平诞辰纪念日']],
['9-3', ['中国抗日战争胜利纪念日']],
['9-8', ['世界扫盲日']],
['9-9', ['毛泽东逝世纪念日']],
['9-14', ['世界清洁地球日']],
['9-18', ['九一八事变纪念日']],
['9-20', ['全国爱牙日']],
['9-21', ['国际和平日']],
['9-27', ['世界旅游日']],
['10-4', ['世界动物日']],
['10-10', ['辛亥革命纪念日']],
['10-13', ['中国少年先锋队诞辰日']],
['10-25', ['抗美援朝纪念日']],
['11-12', ['孙中山诞辰纪念日']],
['11-17', ['国际大学生节']],
['11-28', ['恩格斯诞辰纪念日']],
['12-1', ['世界艾滋病日']],
['12-12', ['西安事变纪念日']],
['12-13', ['国家公祭日']],
['12-26', ['毛泽东诞辰纪念日']]
]);
SolarUtil.WEEK_FESTIVAL = new Dictionary([
['3-0-1', '全国中小学生安全教育日'],
['5-2-0', '母亲节'],
['6-3-0', '父亲节',],
['11-4-4', '感恩节']
]);
return SolarUtil;
}());
export { SolarUtil };
//# sourceMappingURL=SolarUtil.js.map