Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ceab84986 | ||
|
|
8b374be752 | ||
|
|
b2600d7c5a | ||
|
|
f57c4887a6 | ||
|
|
2dcf35b1e8 | ||
|
|
d038adead7 | ||
|
|
abfcd39fe6 | ||
|
|
10e8041f21 | ||
|
|
5ab29be0bf | ||
|
|
9e159c109f | ||
|
|
4e66c329b6 | ||
|
|
9f3e2d29bd | ||
|
|
ce267b4942 | ||
|
|
6581f01956 | ||
|
|
80a96cb68e | ||
|
|
b9ceeea2eb | ||
|
|
2c7fa900a6 | ||
|
|
0863bb6371 | ||
|
|
5b0ed30657 |
34
CHANGELOG.md
Normal file
34
CHANGELOG.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Changelog
|
||||
|
||||
|
||||
## [1.6.10] - 2024-02-06
|
||||
1. 八字转阳历结果按时间先后排序,转换速度大幅提升。
|
||||
|
||||
## [1.6.11] - 2024-02-29
|
||||
1. 修复节气当天获取下一节气仍为当前节气的问题。
|
||||
2. 完善package.json中author信息。
|
||||
3. 修复每日宜忌存在重复项的问题。
|
||||
4. 修复八字转阳历存在遗漏的问题。
|
||||
|
||||
## [1.6.12] - 2024-03-17
|
||||
1. 修复八字转阳历存在遗漏的问题。
|
||||
|
||||
## [1.6.13] - 2024-11-12
|
||||
1. 新增2025年法定假日数据。
|
||||
|
||||
## [1.7.0] - 2025-02-12
|
||||
1. 修复每日宜忌错别字。
|
||||
2. 去除每日宜忌的重复项。
|
||||
|
||||
## [1.7.1] - 2025-03-05
|
||||
1. 调整每日宜忌的默认流派。
|
||||
2. 更新2018之后的△T参数。
|
||||
|
||||
## [1.7.2] - 2025-04-07
|
||||
1. 修复八字身宫计算错误的问题。
|
||||
|
||||
## [1.7.3] - 2025-04-29
|
||||
1. 修复身宫报错的问题。
|
||||
|
||||
## [1.7.4] - 2025-09-07
|
||||
1. 修复极端情况下八字转公历时刻出现遗漏的问题。
|
||||
@@ -181,3 +181,80 @@ test('test11', () => {
|
||||
test('test12', () => {
|
||||
expect(Solar.fromYmdHms('1999', '06', '07', '09', '11', '00').getLunar().getEightChar().toString()).toBe('己卯 庚午 庚寅 辛巳');
|
||||
});
|
||||
|
||||
test('流月', () => {
|
||||
const solar = Solar.fromYmdHms(2023, 5, 3, 9, 0, 0);
|
||||
const lunar = solar.getLunar();
|
||||
const eightChar = lunar.getEightChar();
|
||||
const yun = eightChar.getYun(1);
|
||||
expect(yun.getDaYun()[0].getLiuNian()[0].getLiuYue()[0].getGanZhi()).toBe('甲寅');
|
||||
});
|
||||
|
||||
test('test19', () => {
|
||||
const solarList = Solar.fromBaZi('丁丑','癸卯','癸丑','辛酉', 2, 1900);
|
||||
const timeList = [];
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['1937-03-27 18:00:00', '1997-03-12 18:00:00']);
|
||||
});
|
||||
|
||||
test('test20', () => {
|
||||
const lunar = Solar.fromYmdHms(2024, 1, 29, 9, 30, 0).getLunar();
|
||||
const eightChar = lunar.getEightChar();
|
||||
expect(eightChar.getMingGong()).toBe('癸亥');
|
||||
expect(eightChar.getShenGong()).toBe('己未');
|
||||
});
|
||||
|
||||
|
||||
test('test21', () => {
|
||||
expect(Solar.fromYmdHms(1990, 1, 27, 0, 0, 0).getLunar().getEightChar().getShenGong()).toBe('丙寅');
|
||||
});
|
||||
|
||||
|
||||
test('test23', () => {
|
||||
expect(Solar.fromYmdHms(2019, 3, 7, 8, 0, 0).getLunar().getEightChar().getMingGong()).toBe('甲戌');
|
||||
});
|
||||
|
||||
|
||||
test('test24', () => {
|
||||
expect(Solar.fromYmdHms(2019, 3, 27, 2, 0, 0).getLunar().getEightChar().getMingGong()).toBe('丁丑');
|
||||
});
|
||||
|
||||
|
||||
test('test25', () => {
|
||||
expect(Lunar.fromYmdHms(1994, 5, 20, 18, 0 ,0).getEightChar().getMingGong()).toBe('丙寅');
|
||||
});
|
||||
|
||||
|
||||
test('test26', () => {
|
||||
const lunar = Solar.fromYmdHms(1986, 2, 16, 8, 0, 0).getLunar();
|
||||
const eightChar = lunar.getEightChar();
|
||||
expect(eightChar.getMingGong()).toBe('己亥');
|
||||
expect(eightChar.getShenGong()).toBe('乙未');
|
||||
});
|
||||
|
||||
|
||||
test('test27', () => {
|
||||
const lunar = Solar.fromYmdHms(1972, 11, 27, 10, 0, 0).getLunar();
|
||||
const eightChar = lunar.getEightChar();
|
||||
expect(eightChar.getShenGong()).toBe('乙巳');
|
||||
});
|
||||
|
||||
test('test28', () => {
|
||||
const solarList = Solar.fromBaZi('丁卯','丁未','甲申','乙丑', 1, 1900);
|
||||
const timeList = [];
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['1987-08-03 02:00:00']);
|
||||
});
|
||||
|
||||
test('test29', () => {
|
||||
const solarList = Solar.fromBaZi('壬申','壬寅','庚辰','甲申', 1, 1801);
|
||||
const timeList = [];
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['1812-02-18 16:00:00', '1992-03-05 15:00:00']);
|
||||
});
|
||||
|
||||
@@ -51,3 +51,12 @@ test('testRemove', () => {
|
||||
holiday = HolidayUtil.getHoliday('2010-01-01');
|
||||
expect(holiday).toBe(null);
|
||||
});
|
||||
|
||||
test('test2025', () => {
|
||||
let names = HolidayUtil.NAMES;
|
||||
names[0] = '元旦节';
|
||||
|
||||
HolidayUtil.fix(names, '');
|
||||
const holiday = HolidayUtil.getHoliday(2025, 1, 1);
|
||||
expect(holiday.getName()).toBe('元旦节');
|
||||
});
|
||||
|
||||
@@ -88,12 +88,12 @@ test('test6', () => {
|
||||
|
||||
test('test7', () => {
|
||||
const lunar = Lunar.fromYmd(2012, 9, 1);
|
||||
expect(lunar.getJieQiTable()['白露'].toYmdHms()).toBe('2012-09-07 13:29:00');
|
||||
expect(lunar.getJieQiTable()['白露'].toYmdHms()).toBe('2012-09-07 13:29:01');
|
||||
});
|
||||
|
||||
test('test8', () => {
|
||||
const lunar = Lunar.fromYmd(2050, 12, 1);
|
||||
expect(lunar.getJieQiTable()['DA_XUE'].toYmdHms()).toBe('2050-12-07 06:41:00');
|
||||
expect(lunar.getJieQiTable()['DA_XUE'].toYmdHms()).toBe('2050-12-07 06:40:53');
|
||||
});
|
||||
|
||||
test('test9', () => {
|
||||
@@ -103,3 +103,14 @@ test('test9', () => {
|
||||
expect(lunar.getJie()).toBe('');
|
||||
expect(lunar.getQi()).toBe('冬至');
|
||||
});
|
||||
|
||||
test('test10', () => {
|
||||
const lunar = Lunar.fromYmd(2023, 6, 1);
|
||||
expect(lunar.getJieQiTable()['冬至'].toYmdHms()).toBe('2022-12-22 05:48:01');
|
||||
});
|
||||
|
||||
test('test11', () => {
|
||||
const lunar = Solar.fromYmd(2024, 2, 4).getLunar();
|
||||
expect(lunar.getPrevJie(true).getName()).toBe('立春');
|
||||
expect(lunar.getNextJie(true).getName()).toBe('惊蛰');
|
||||
});
|
||||
|
||||
@@ -558,7 +558,7 @@ test('test051', () => {
|
||||
|
||||
test('test052', () => {
|
||||
const lunar = Solar.fromYmd(2011, 11, 12).getLunar();
|
||||
expect(lunar.getDayPositionTai()).toBe('厕灶厨 外西南');
|
||||
expect(lunar.getDayPositionTai()).toBe('厨灶厕 外西南');
|
||||
});
|
||||
|
||||
test('test053', () => {
|
||||
@@ -640,3 +640,31 @@ test('test068', () => {
|
||||
const lunar = Lunar.fromYmd(345, 1, 1);
|
||||
expect(lunar.getSolar().toString()).toBe('0345-02-18');
|
||||
});
|
||||
|
||||
test('test069', () => {
|
||||
const solar = Solar.fromYmd(917, 12, 1);
|
||||
expect(solar.getLunar().toString()).toBe('九一七年闰十月十四');
|
||||
});
|
||||
|
||||
test('test070', () => {
|
||||
const solar = Solar.fromYmd(917, 12, 31);
|
||||
expect(solar.getLunar().toString()).toBe('九一七年冬月十五');
|
||||
});
|
||||
|
||||
test('test071', () => {
|
||||
const solar = Solar.fromYmd(918, 1, 1);
|
||||
expect(solar.getLunar().toString()).toBe('九一七年冬月十六');
|
||||
});
|
||||
|
||||
test('test072', () => {
|
||||
const solar = Solar.fromYmd(1991, 2, 15);
|
||||
const lunar = solar.getLunar();
|
||||
expect(lunar.toString()).toBe('一九九一年正月初一');
|
||||
expect(lunar.getYearInGanZhi()).toBe('辛未');
|
||||
expect(lunar.getYearShengXiao()).toBe('羊');
|
||||
});
|
||||
|
||||
test('test073', () => {
|
||||
const solar = Lunar.fromYmd(2024, 10, 10).getSolar();
|
||||
expect(solar.toString()).toBe('2024-11-10');
|
||||
});
|
||||
|
||||
@@ -88,11 +88,6 @@ test('test17', () => {
|
||||
expect(year.getYun()).toBe('八运');
|
||||
});
|
||||
|
||||
test('test18', () => {
|
||||
const year = LunarYear.fromYear(2022);
|
||||
expect(year.getJieQiJulianDays()).toStrictEqual([2459555.7478605337, 2459570.499405936, 2459585.217980813, 2459599.9437018055, 2459614.7018054826, 2459629.5297495862, 2459644.446920318, 2459659.4814200983, 2459674.6389274267, 2459689.9334118855, 2459705.3512322665, 2459720.890569021, 2459736.517794922, 2459752.2178259823, 2459767.9429320656, 2459783.6713957503, 2459799.3534378354, 2459814.969435438, 2459830.480632029, 2459845.8774438635, 2459861.140466851, 2459876.2746654437, 2459891.281458942, 2459906.1807667296, 2459920.9903281447, 2459935.741672728, 2459950.461561025, 2459965.187040542, 2459979.9460747372, 2459994.7736723446, 2460009.6916930582]);
|
||||
});
|
||||
|
||||
test('test19', () => {
|
||||
const year = LunarYear.fromYear(2021);
|
||||
expect(year.getDayCount()).toBe(354);
|
||||
|
||||
@@ -29,7 +29,7 @@ test('9', () => {
|
||||
});
|
||||
|
||||
test('10', () => {
|
||||
expect(SolarUtil.isLeapYear(1500)).toBe(false);
|
||||
expect(SolarUtil.isLeapYear(1500)).toBe(true);
|
||||
});
|
||||
|
||||
test('11', () => {
|
||||
@@ -63,7 +63,7 @@ test('16', () => {
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['1976-09-21 12:00:00', '1916-10-06 12:00:00']);
|
||||
expect(timeList).toStrictEqual(['1916-10-06 12:00:00', '1976-09-21 12:00:00']);
|
||||
});
|
||||
|
||||
test('17', () => {
|
||||
@@ -72,7 +72,7 @@ test('17', () => {
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['1999-07-21 16:00:00', '1939-08-05 16:00:00']);
|
||||
expect(timeList).toStrictEqual(['1939-08-05 16:00:00', '1999-07-21 16:00:00']);
|
||||
});
|
||||
|
||||
test('18', () => {
|
||||
@@ -81,7 +81,7 @@ test('18', () => {
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['1960-12-17 12:00:00', '1901-01-01 12:00:00']);
|
||||
expect(timeList).toStrictEqual(['1901-01-01 12:00:00', '1960-12-17 12:00:00']);
|
||||
});
|
||||
|
||||
test('19', () => {
|
||||
@@ -90,7 +90,7 @@ test('19', () => {
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['2020-07-21 22:00:00', '1960-08-05 22:00:00']);
|
||||
expect(timeList).toStrictEqual(['1960-08-05 22:00:00', '2020-07-21 22:00:00']);
|
||||
});
|
||||
|
||||
test('20', () => {
|
||||
@@ -109,12 +109,12 @@ test('22', () => {
|
||||
});
|
||||
|
||||
test('23', () => {
|
||||
const solarList = Solar.fromBaZi('癸卯', '甲寅', '癸丑', '甲子', 2, 1843);
|
||||
const solarList = Solar.fromBaZi('癸卯', '甲寅', '甲寅', '甲子', 2, 1843);
|
||||
const timeList = [];
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['2023-02-24 23:00:00', '1843-02-08 23:00:00']);
|
||||
expect(timeList).toStrictEqual(['1843-02-09 00:00:00', '2023-02-25 00:00:00']);
|
||||
});
|
||||
|
||||
test('24', () => {
|
||||
@@ -123,7 +123,7 @@ test('24', () => {
|
||||
solarList.forEach(solar => {
|
||||
timeList.push(solar.toYmdHms());
|
||||
})
|
||||
expect(timeList).toStrictEqual(['1960-01-15 16:00:00', '1900-01-29 16:00:00']);
|
||||
expect(timeList).toStrictEqual(['1900-01-29 16:00:00', '1960-01-15 16:00:00']);
|
||||
});
|
||||
|
||||
test('25', () => {
|
||||
@@ -134,3 +134,18 @@ test('25', () => {
|
||||
})
|
||||
expect(timeList).toStrictEqual(['1959-12-17 16:00:00']);
|
||||
});
|
||||
|
||||
test('26', () => {
|
||||
const solar = Solar.fromYmd(2023, 8, 31);
|
||||
expect(solar.nextMonth(2).toYmd()).toBe('2023-10-31');
|
||||
});
|
||||
|
||||
test('27', () => {
|
||||
const solar = Solar.fromYmd(2023, 8, 31);
|
||||
expect(solar.nextYear(2).toYmd()).toBe('2025-08-31');
|
||||
});
|
||||
|
||||
test('28', () => {
|
||||
const solar = Solar.fromYmd(2023, 8, 31);
|
||||
expect(solar.nextMonth(6).toYmd()).toBe('2024-02-29');
|
||||
});
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
var {SolarWeek,SolarUtil} = require('../lunar');
|
||||
var {SolarWeek,SolarUtil,Solar} = require('../lunar');
|
||||
|
||||
test('testFromMonday', () => {
|
||||
const start = 1;
|
||||
@@ -37,3 +37,41 @@ test('test3', () => {
|
||||
const week = SolarWeek.fromYmd(2022, 3, 6, start);
|
||||
expect(week.getIndexInYear()).toBe(11);
|
||||
});
|
||||
|
||||
test('test4', () => {
|
||||
expect(Solar.fromYmd(1129, 11, 17).getWeek()).toBe(0);
|
||||
});
|
||||
|
||||
test('test5', () => {
|
||||
expect(Solar.fromYmd(1129, 11, 1).getWeek()).toBe(5);
|
||||
});
|
||||
|
||||
test('test6', () => {
|
||||
expect(Solar.fromYmd(8, 11, 1).getWeek()).toBe(4);
|
||||
});
|
||||
|
||||
test('test7', () => {
|
||||
expect(Solar.fromYmd(1582, 9, 30).getWeek()).toBe(0);
|
||||
});
|
||||
|
||||
test('test8', () => {
|
||||
expect(Solar.fromYmd(1582, 1, 1).getWeek()).toBe(1);
|
||||
});
|
||||
|
||||
test('test9', () => {
|
||||
expect(Solar.fromYmd(1500, 2, 29).getWeek()).toBe(6);
|
||||
});
|
||||
|
||||
test('test10', () => {
|
||||
expect(Solar.fromYmd(9865, 7, 26).getWeek()).toBe(3);
|
||||
});
|
||||
|
||||
test('test11', () => {
|
||||
expect(Solar.fromYmd(1961, 9, 30).getWeek()).toBe(6);
|
||||
expect(Solar.fromYmdHms(1961, 9, 30, 23, 59, 59).getWeek()).toBe(6);
|
||||
});
|
||||
|
||||
test('test12', () => {
|
||||
expect(Solar.fromYmdHms(2021, 9, 15, 0, 0, 0).getWeek()).toBe(3);
|
||||
expect(Solar.fromYmdHms(2021, 9, 15, 23, 59, 59).getWeek()).toBe(3);
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lunar-javascript",
|
||||
"version": "1.6.1",
|
||||
"description": "lunar is a calendar library for Solar and Chinese Lunar.",
|
||||
"version": "1.7.4",
|
||||
"description": "lunar是一款无第三方依赖的公历(阳历)、农历(阴历、老黄历)、佛历和道历工具,支持星座、儒略日、干支、生肖、节气、节日、彭祖百忌、每日宜忌、吉神宜趋、凶煞宜忌、吉神(喜神/福神/财神/阳贵神/阴贵神)方位、胎神方位、冲煞、纳音、星宿、八字、五行、十神、建除十二值星、青龙名堂等十二神、黄道日及吉凶等。lunar is a calendar library for Solar and Chinese Lunar.",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "jest"
|
||||
@@ -42,7 +42,7 @@
|
||||
"青龙名堂等十二神",
|
||||
"黄道黑道日"
|
||||
],
|
||||
"author": "6tail",
|
||||
"author": "6tail <6tail@6tail.cn> (https://6tail.cn)",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/6tail/lunar-javascript/issues"
|
||||
|
||||
Reference in New Issue
Block a user