kor-lunar 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +22 -10
- package/dist/index.d.ts +6 -4
- package/dist/kor-lunar.d.ts +7 -2
- package/dist/kor-lunar.esm.js +49 -5
- package/dist/kor-lunar.esm.js.map +1 -1
- package/dist/kor-lunar.js +50 -4
- package/dist/kor-lunar.js.map +1 -1
- package/dist/kor-lunar.min.js +1 -1
- package/dist/{lunar-data.d.ts → lunar-table.d.ts} +18 -0
- package/package.json +1 -1
- /package/dist/{solar-data.d.ts → solar-table.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# kor-lunar
|
|
2
2
|
|
|
3
|
-
이 라이브러리는 학습용으로 제작되었으며, 한국천문연구원(KASI)의 음력·양력 데이터를 기반으로 한 자바스크립트 라이브러리입니다.
|
|
3
|
+
이 라이브러리는 학습용으로 제작되었으며, 한국천문연구원(KASI)의 음력·양력 변환 데이터를 기반으로 한 자바스크립트 라이브러리입니다.
|
|
4
|
+
네트워크 요청 없이 **오프라인에서도 동작**하고, 별도의 외부 의존성이 없습니다.
|
|
4
5
|
|
|
5
6
|
> **⚠️ 주의:** 데이터는 **2025년 5월 20일 기준**으로 갱신되었습니다.
|
|
6
7
|
> 이후의 중요한 변경 사항이 반영되지 않을 수 있으므로,
|
|
@@ -8,11 +9,13 @@
|
|
|
8
9
|
|
|
9
10
|
## 특징
|
|
10
11
|
|
|
11
|
-
- **음력 ↔ 양력 변환**
|
|
12
|
-
- **윤달 처리**
|
|
13
|
-
- **음력 간지
|
|
12
|
+
- **음력 ↔ 양력 변환** - `toLunar`, `toSolar`
|
|
13
|
+
- **윤달 처리** - `isLeapMonth` 옵션
|
|
14
|
+
- **음력 간지 출력** - 세차(`secha`), 월건(`wolgeon`), 일진(`iljin`)
|
|
14
15
|
- 윤달인 경우 `wolgeon`은 빈 문자열로 반환됩니다
|
|
15
|
-
-
|
|
16
|
+
- **TypeScript 지원** - 타입 정의 기본 제공
|
|
17
|
+
- **Zero Dependencies** - 외부 의존성 없음
|
|
18
|
+
- **CJS / ESM / UMD** — 다양한 환경에서 사용 가능
|
|
16
19
|
|
|
17
20
|
- [예제 사이트](https://kahyou22.github.io/kor-lunar-js/)
|
|
18
21
|
|
|
@@ -29,6 +32,14 @@ _범위를 벗어난 날짜가 입력될 경우 `RangeError`가 발생하며,
|
|
|
29
32
|
npm install kor-lunar
|
|
30
33
|
```
|
|
31
34
|
|
|
35
|
+
### 브라우저 CDN
|
|
36
|
+
|
|
37
|
+
```html
|
|
38
|
+
<script src="https://cdn.jsdelivr.net/npm/kor-lunar@1.4/dist/kor-lunar.min.js"></script>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
CDN 사용 시 전역 변수 `korLunar`로 접근할 수 있습니다.
|
|
42
|
+
|
|
32
43
|
## 사용법
|
|
33
44
|
|
|
34
45
|
### 모듈 불러오기
|
|
@@ -39,10 +50,10 @@ import korLunar from "kor-lunar";
|
|
|
39
50
|
const korLunar = require("kor-lunar");
|
|
40
51
|
```
|
|
41
52
|
|
|
42
|
-
|
|
53
|
+
Named export도 지원합니다:
|
|
43
54
|
|
|
44
|
-
```
|
|
45
|
-
|
|
55
|
+
```js
|
|
56
|
+
import { toLunar, toSolar } from "kor-lunar";
|
|
46
57
|
```
|
|
47
58
|
|
|
48
59
|
## 예제
|
|
@@ -66,6 +77,7 @@ console.log(korLunar.toLunar(2025, 6, 25));
|
|
|
66
77
|
// dayOfWeek: 3
|
|
67
78
|
// }
|
|
68
79
|
|
|
80
|
+
// 양력 → 음력 (윤달)
|
|
69
81
|
console.log(korLunar.toLunar(2025, 7, 25));
|
|
70
82
|
// {
|
|
71
83
|
// year: 2025,
|
|
@@ -87,8 +99,8 @@ console.log(korLunar.toSolar(2025, 6, 1, true));
|
|
|
87
99
|
// { year: 2025, month: 7, day: 25 }
|
|
88
100
|
```
|
|
89
101
|
|
|
90
|
-
> 권장되진 않지만, `korLunar.
|
|
91
|
-
> 이를 통해 단순 음력
|
|
102
|
+
> 권장되진 않지만, `korLunar.LunarTable`과 `korLunar.SolarTable` 같은 내부 함수에 직접 접근할 수도 있습니다.
|
|
103
|
+
> 이를 통해 단순 음력 변환 뿐만 아니라, 더 다양한 기능을 구현할 수 있습니다.
|
|
92
104
|
> [예제 사이트: 음력 달력](https://kahyou22.github.io/kor-lunar-js/#lunarCalendar)
|
|
93
105
|
|
|
94
106
|
## 라이선스
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
|
-
import { toLunar, toSolar, LunarData, SolarData, LunarDate, SolarDate } from "./kor-lunar";
|
|
1
|
+
import { toLunar, toSolar, LunarTable, SolarTable, LunarData, SolarData, LunarDate, SolarDate } from "./kor-lunar";
|
|
2
2
|
declare const korLunar: {
|
|
3
3
|
toLunar: (solYear: number, solMonth: number, solDay: number) => LunarDate;
|
|
4
4
|
toSolar: (lunYear: number, lunMonth: number, lunDay: number, isLeapMonth: boolean) => SolarDate;
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
LunarTable: typeof LunarTable;
|
|
6
|
+
SolarTable: typeof SolarTable;
|
|
7
|
+
LunarData: typeof LunarTable;
|
|
8
|
+
SolarData: typeof SolarTable;
|
|
7
9
|
};
|
|
8
10
|
export default korLunar;
|
|
9
|
-
export { toLunar, toSolar, LunarData, SolarData, LunarDate, SolarDate };
|
|
11
|
+
export { toLunar, toSolar, LunarTable, SolarTable, LunarData, SolarData, LunarDate, SolarDate };
|
package/dist/kor-lunar.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import * as LunarTable from "./lunar-table";
|
|
2
|
+
import * as SolarTable from "./solar-table";
|
|
1
3
|
export interface LunarDate {
|
|
2
4
|
year: number;
|
|
3
5
|
month: number;
|
|
@@ -33,5 +35,8 @@ export declare const toLunar: (solYear: number, solMonth: number, solDay: number
|
|
|
33
35
|
* @returns 양력 날짜
|
|
34
36
|
*/
|
|
35
37
|
export declare const toSolar: (lunYear: number, lunMonth: number, lunDay: number, isLeapMonth: boolean) => SolarDate;
|
|
36
|
-
export
|
|
37
|
-
|
|
38
|
+
export { LunarTable, SolarTable };
|
|
39
|
+
/** @deprecated `LunarData`는 `LunarTable`로 이름이 변경되었습니다. */
|
|
40
|
+
export declare const LunarData: typeof LunarTable;
|
|
41
|
+
/** @deprecated `SolarData`는 `SolarTable`로 이름이 변경되었습니다. */
|
|
42
|
+
export declare const SolarData: typeof SolarTable;
|
package/dist/kor-lunar.esm.js
CHANGED
|
@@ -228,8 +228,46 @@ var isValidDate$1 = function (year, month, day, isLeapMonth) {
|
|
|
228
228
|
var endDay = isLeapMonth ? getLeapMonthDays(year, month) : getMonthDays$1(year, month);
|
|
229
229
|
return day <= endDay;
|
|
230
230
|
};
|
|
231
|
+
/**
|
|
232
|
+
* 해당 월의 0-based 연속적인 월 인덱스를 반환합니다.
|
|
233
|
+
* @param year 1890년 ~ 2050년
|
|
234
|
+
* @param month 1월 ~ 12월
|
|
235
|
+
* @param isLeapMonth 대상이 윤달이면 true
|
|
236
|
+
* @returns 윤달이 있는 해는 0~12 (13개월), 없는 해는 0~11 (12개월)
|
|
237
|
+
*/
|
|
238
|
+
var getMonthIndex = function (year, month, isLeapMonth) {
|
|
239
|
+
month = toInt(month);
|
|
240
|
+
var index = month;
|
|
241
|
+
if (hasLeapMonth(year)) {
|
|
242
|
+
var leapMonth = getLeapMonth(year);
|
|
243
|
+
if ((isLeapMonth && month === leapMonth) || month > leapMonth) {
|
|
244
|
+
index++;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
return index - 1;
|
|
248
|
+
};
|
|
249
|
+
/**
|
|
250
|
+
* 0-based 연속적인 월 인덱스에 해당하는 월과 윤달 여부를 반환합니다.
|
|
251
|
+
* @param year 1890년 ~ 2050년
|
|
252
|
+
* @param monthIndex 윤달이 있는 해는 0~12 (13개월), 없는 해는 0~11 (12개월)
|
|
253
|
+
* @returns month (1~12)와 isLeapMonth 여부
|
|
254
|
+
*/
|
|
255
|
+
var getMonthFromIndex = function (year, monthIndex) {
|
|
256
|
+
var leapMonth = getLeapMonth(year);
|
|
257
|
+
var isLeapMonth = false;
|
|
258
|
+
var index = monthIndex;
|
|
259
|
+
if (leapMonth > 0) {
|
|
260
|
+
if (index === leapMonth) {
|
|
261
|
+
isLeapMonth = true;
|
|
262
|
+
}
|
|
263
|
+
if (index >= leapMonth) {
|
|
264
|
+
index--;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
return { month: index + 1, isLeapMonth: isLeapMonth };
|
|
268
|
+
};
|
|
231
269
|
|
|
232
|
-
var
|
|
270
|
+
var LunarTable = /*#__PURE__*/Object.freeze({
|
|
233
271
|
__proto__: null,
|
|
234
272
|
BASE_YEAR: BASE_YEAR$1,
|
|
235
273
|
BASE_MONTH: BASE_MONTH$1,
|
|
@@ -253,7 +291,9 @@ var LunarData = /*#__PURE__*/Object.freeze({
|
|
|
253
291
|
getIljinByJulianDay: getIljinByJulianDay,
|
|
254
292
|
getIljin: getIljin,
|
|
255
293
|
isDateInRange: isDateInRange$1,
|
|
256
|
-
isValidDate: isValidDate$1
|
|
294
|
+
isValidDate: isValidDate$1,
|
|
295
|
+
getMonthIndex: getMonthIndex,
|
|
296
|
+
getMonthFromIndex: getMonthFromIndex
|
|
257
297
|
});
|
|
258
298
|
|
|
259
299
|
var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
@@ -348,7 +388,7 @@ var isValidDate = function (year, month, day) {
|
|
|
348
388
|
return day <= endDay;
|
|
349
389
|
};
|
|
350
390
|
|
|
351
|
-
var
|
|
391
|
+
var SolarTable = /*#__PURE__*/Object.freeze({
|
|
352
392
|
__proto__: null,
|
|
353
393
|
BASE_YEAR: BASE_YEAR,
|
|
354
394
|
BASE_MONTH: BASE_MONTH,
|
|
@@ -458,8 +498,12 @@ var toSolar = function (lunYear, lunMonth, lunDay, isLeapMonth) {
|
|
|
458
498
|
}
|
|
459
499
|
return { year: year, month: month, day: day };
|
|
460
500
|
};
|
|
501
|
+
/** @deprecated `LunarData`는 `LunarTable`로 이름이 변경되었습니다. */
|
|
502
|
+
var LunarData = LunarTable;
|
|
503
|
+
/** @deprecated `SolarData`는 `SolarTable`로 이름이 변경되었습니다. */
|
|
504
|
+
var SolarData = SolarTable;
|
|
461
505
|
|
|
462
|
-
var korLunar = { toLunar: toLunar, toSolar: toSolar, LunarData: LunarData, SolarData: SolarData };
|
|
506
|
+
var korLunar = { toLunar: toLunar, toSolar: toSolar, LunarTable: LunarTable, SolarTable: SolarTable, LunarData: LunarData, SolarData: SolarData };
|
|
463
507
|
|
|
464
|
-
export { LunarData, SolarData, korLunar as default, toLunar, toSolar };
|
|
508
|
+
export { LunarData, LunarTable, SolarData, SolarTable, korLunar as default, toLunar, toSolar };
|
|
465
509
|
//# sourceMappingURL=kor-lunar.esm.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kor-lunar.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kor-lunar.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/kor-lunar.js
CHANGED
|
@@ -232,8 +232,46 @@ var isValidDate$1 = function (year, month, day, isLeapMonth) {
|
|
|
232
232
|
var endDay = isLeapMonth ? getLeapMonthDays(year, month) : getMonthDays$1(year, month);
|
|
233
233
|
return day <= endDay;
|
|
234
234
|
};
|
|
235
|
+
/**
|
|
236
|
+
* 해당 월의 0-based 연속적인 월 인덱스를 반환합니다.
|
|
237
|
+
* @param year 1890년 ~ 2050년
|
|
238
|
+
* @param month 1월 ~ 12월
|
|
239
|
+
* @param isLeapMonth 대상이 윤달이면 true
|
|
240
|
+
* @returns 윤달이 있는 해는 0~12 (13개월), 없는 해는 0~11 (12개월)
|
|
241
|
+
*/
|
|
242
|
+
var getMonthIndex = function (year, month, isLeapMonth) {
|
|
243
|
+
month = toInt(month);
|
|
244
|
+
var index = month;
|
|
245
|
+
if (hasLeapMonth(year)) {
|
|
246
|
+
var leapMonth = getLeapMonth(year);
|
|
247
|
+
if ((isLeapMonth && month === leapMonth) || month > leapMonth) {
|
|
248
|
+
index++;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
return index - 1;
|
|
252
|
+
};
|
|
253
|
+
/**
|
|
254
|
+
* 0-based 연속적인 월 인덱스에 해당하는 월과 윤달 여부를 반환합니다.
|
|
255
|
+
* @param year 1890년 ~ 2050년
|
|
256
|
+
* @param monthIndex 윤달이 있는 해는 0~12 (13개월), 없는 해는 0~11 (12개월)
|
|
257
|
+
* @returns month (1~12)와 isLeapMonth 여부
|
|
258
|
+
*/
|
|
259
|
+
var getMonthFromIndex = function (year, monthIndex) {
|
|
260
|
+
var leapMonth = getLeapMonth(year);
|
|
261
|
+
var isLeapMonth = false;
|
|
262
|
+
var index = monthIndex;
|
|
263
|
+
if (leapMonth > 0) {
|
|
264
|
+
if (index === leapMonth) {
|
|
265
|
+
isLeapMonth = true;
|
|
266
|
+
}
|
|
267
|
+
if (index >= leapMonth) {
|
|
268
|
+
index--;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
return { month: index + 1, isLeapMonth: isLeapMonth };
|
|
272
|
+
};
|
|
235
273
|
|
|
236
|
-
var
|
|
274
|
+
var LunarTable = /*#__PURE__*/Object.freeze({
|
|
237
275
|
__proto__: null,
|
|
238
276
|
BASE_YEAR: BASE_YEAR$1,
|
|
239
277
|
BASE_MONTH: BASE_MONTH$1,
|
|
@@ -257,7 +295,9 @@ var LunarData = /*#__PURE__*/Object.freeze({
|
|
|
257
295
|
getIljinByJulianDay: getIljinByJulianDay,
|
|
258
296
|
getIljin: getIljin,
|
|
259
297
|
isDateInRange: isDateInRange$1,
|
|
260
|
-
isValidDate: isValidDate$1
|
|
298
|
+
isValidDate: isValidDate$1,
|
|
299
|
+
getMonthIndex: getMonthIndex,
|
|
300
|
+
getMonthFromIndex: getMonthFromIndex
|
|
261
301
|
});
|
|
262
302
|
|
|
263
303
|
var MONTH_DAYS = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
@@ -352,7 +392,7 @@ var isValidDate = function (year, month, day) {
|
|
|
352
392
|
return day <= endDay;
|
|
353
393
|
};
|
|
354
394
|
|
|
355
|
-
var
|
|
395
|
+
var SolarTable = /*#__PURE__*/Object.freeze({
|
|
356
396
|
__proto__: null,
|
|
357
397
|
BASE_YEAR: BASE_YEAR,
|
|
358
398
|
BASE_MONTH: BASE_MONTH,
|
|
@@ -462,11 +502,17 @@ var toSolar = function (lunYear, lunMonth, lunDay, isLeapMonth) {
|
|
|
462
502
|
}
|
|
463
503
|
return { year: year, month: month, day: day };
|
|
464
504
|
};
|
|
505
|
+
/** @deprecated `LunarData`는 `LunarTable`로 이름이 변경되었습니다. */
|
|
506
|
+
var LunarData = LunarTable;
|
|
507
|
+
/** @deprecated `SolarData`는 `SolarTable`로 이름이 변경되었습니다. */
|
|
508
|
+
var SolarData = SolarTable;
|
|
465
509
|
|
|
466
|
-
var korLunar = { toLunar: toLunar, toSolar: toSolar, LunarData: LunarData, SolarData: SolarData };
|
|
510
|
+
var korLunar = { toLunar: toLunar, toSolar: toSolar, LunarTable: LunarTable, SolarTable: SolarTable, LunarData: LunarData, SolarData: SolarData };
|
|
467
511
|
|
|
468
512
|
exports.LunarData = LunarData;
|
|
513
|
+
exports.LunarTable = LunarTable;
|
|
469
514
|
exports.SolarData = SolarData;
|
|
515
|
+
exports.SolarTable = SolarTable;
|
|
470
516
|
exports["default"] = korLunar;
|
|
471
517
|
exports.toLunar = toLunar;
|
|
472
518
|
exports.toSolar = toSolar;
|
package/dist/kor-lunar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kor-lunar.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"kor-lunar.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/kor-lunar.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var korLunar=function(n){"use strict";var t=function(n){return"string"==typeof n||"number"==typeof n?~~n:n},r=[50342582,46534058,50360036,46403236,46402890,50222421,46533271,46400854,50345309,46533333,50367442,46401362,46534309,50223914,46401099,46533275,50416294,46400874,46533465,50342826,46401362,50359717,46402341,46402123,50354523,46533293,46400874,50341301,46533545,50363858,46402962,46402853,50355501,46401878,46400181,50481885,46401236,46534057,50343626,46403218,50226854,46400807,46533207,50420054,46533338,46401236,50411345,46401353,50428691,46402195,46400811,50423067,46532973,46533482,50417060,46402468,46402377,50343243,46402197,50363051,46400813,46533293,50420394,46534066,46402980,50413217,46402890,50367893,46402198,46400854,50357621,46533333,46401234,50349909,46534309,46403146,50214478,46533275,50363094,46400874,46533465,50355122,46401362,46401317,50350891,46402123,50366891,46400173,46531947,50423209,46534057,46402962,50351509,46402853,50376269,46402134,46400182,50490093,46401236,46534057,50355922,46403218,46402854,50214190,46533207,50366902,46533466,46401236,50354025,46401353,46401171,50350743,46400811,46533211,50342574,46400362,50494933,46402468,46402377,50355539,46402197,46400813,50410797,46533293,50371498,46400978,46534053,50355882,46402890,46402197,50350749,46400854,46533301,50342614,46401234,50358117,46534309,46403146,50222678,46533787,46400858,50345325,46533481,50380626,46401362,46402341,50424587,46402123,46400683,50352827,46531949,46533481,50343338,46402962,50364069,46402853,46402125,50420301,46400182,46532021,79569],e=["갑","을","병","정","무","기","경","신","임","계"],a=["자","축","인","묘","진","사","오","미","신","유","술","해"],o=1890,u=18900101,i=2050,f=20501118,c={},l=function(n){return n=t(n),r[n-o]},g=function(n,r){return r=t(r),0===(l(n)>>r-1&1)?29:30},A=function(n){return l(n)>>12&15},
|
|
1
|
+
var korLunar=function(n){"use strict";var t=function(n){return"string"==typeof n||"number"==typeof n?~~n:n},r=[50342582,46534058,50360036,46403236,46402890,50222421,46533271,46400854,50345309,46533333,50367442,46401362,46534309,50223914,46401099,46533275,50416294,46400874,46533465,50342826,46401362,50359717,46402341,46402123,50354523,46533293,46400874,50341301,46533545,50363858,46402962,46402853,50355501,46401878,46400181,50481885,46401236,46534057,50343626,46403218,50226854,46400807,46533207,50420054,46533338,46401236,50411345,46401353,50428691,46402195,46400811,50423067,46532973,46533482,50417060,46402468,46402377,50343243,46402197,50363051,46400813,46533293,50420394,46534066,46402980,50413217,46402890,50367893,46402198,46400854,50357621,46533333,46401234,50349909,46534309,46403146,50214478,46533275,50363094,46400874,46533465,50355122,46401362,46401317,50350891,46402123,50366891,46400173,46531947,50423209,46534057,46402962,50351509,46402853,50376269,46402134,46400182,50490093,46401236,46534057,50355922,46403218,46402854,50214190,46533207,50366902,46533466,46401236,50354025,46401353,46401171,50350743,46400811,46533211,50342574,46400362,50494933,46402468,46402377,50355539,46402197,46400813,50410797,46533293,50371498,46400978,46534053,50355882,46402890,46402197,50350749,46400854,46533301,50342614,46401234,50358117,46534309,46403146,50222678,46533787,46400858,50345325,46533481,50380626,46401362,46402341,50424587,46402123,46400683,50352827,46531949,46533481,50343338,46402962,50364069,46402853,46402125,50420301,46400182,46532021,79569],e=["갑","을","병","정","무","기","경","신","임","계"],a=["자","축","인","묘","진","사","오","미","신","유","술","해"],o=1890,u=18900101,i=2050,f=20501118,c={},l=function(n){return n=t(n),r[n-o]},g=function(n,r){return r=t(r),0===(l(n)>>r-1&1)?29:30},A=function(n){return l(n)>>12&15},h=function(n){return 0!==A(n)},M=function(n,r){return(r=t(r))===A(n)},_=function(n,t){return M(n,t)?0===(l(n)>>16&1)?29:30:0},s=function(n){return l(n)>>17&511};c[1890]=0;for(var D=1891;D<=i;D++)c[D]=c[D-1]+s(D-1);var y=function(n){return n=t(n),c[n]},v=function(n,r,e){r=t(r);for(var a=0,o=1;o<r;o++)a+=g(n,o),o===A(n)&&(a+=_(n,o));var u=A(n);return e&&u===r&&(a+=g(n,r)),a},E=function(n,r,e,a){return e=t(e),y(n)+v(n,r,a)+e},L=function(n){return n=t(n),e[(n+6)%e.length]+a[(n+8)%a.length]},S=function(n,r){return n=t(n),r=t(r),e[(2*n+r+3)%e.length]+a[(r+1)%a.length]},T=function(n){return n=t(n),e[(n-1)%e.length]+a[(n+1)%a.length]},B=function(n,r,e){var a=1e4*(n=t(n))+100*(r=t(r))+(e=t(e));return a>=u&&a<=f},Y=Object.freeze({__proto__:null,BASE_YEAR:o,BASE_MONTH:1,BASE_DAY:1,BASE_VALUE:u,MAX_YEAR:i,MAX_MONTH:11,MAX_DAY:18,MAX_VALUE:f,getMonthDays:g,getLeapMonth:A,hasLeapMonth:h,isLeapMonth:M,getLeapMonthDays:_,getYearDays:s,getTotalDaysBeforeYear:y,getTotalDaysBeforeMonth:v,getTotalDays:E,getSecha:L,getWolgeon:S,getIljinByJulianDay:T,getIljin:function(n,t,r,e){var a=E(n,t,r,e);return T(a-1)},isDateInRange:B,isValidDate:function(n,r,e,a){if(n=t(n),r=t(r),e=t(e),n<o||n>i)return!1;if(n===o){if(r<1)return!1;if(1===r&&e<1)return!1}if(n===i){if(r>11)return!1;if(11===r&&e>18)return!1}return!(r<1||r>12)&&(!(e<1)&&e<=(a?_(n,r):g(n,r)))},getMonthIndex:function(n,r,e){var a=r=t(r);if(h(n)){var o=A(n);(e&&r===o||r>o)&&a++}return a-1},getMonthFromIndex:function(n,t){var r=A(n),e=!1,a=t;return r>0&&(a===r&&(e=!0),a>=r&&a--),{month:a+1,isLeapMonth:e}}}),p=[31,28,31,30,31,30,31,31,30,31,30,31],d=1890,b=18900121,O=2050,R=20501231,X={},j=function(n){return(n=t(n))%4==0&&n%100!=0||n%400==0},m=function(n,r){return 2===(r=t(r))&&j(n)?29:p[r-1]},I=function(n){return j(n)?366:365};X[1890]=0;for(var V=1891;V<=O;V++)X[V]=X[V-1]+I(V-1);var w=function(n){return n=t(n),X[n]},H=function(n,t){for(var r=0,e=1;e<t;e++)r+=m(n,e);return r},N=function(n,t,r){return w(n)+H(n,t)+r},U=function(n,r,e){var a=1e4*(n=t(n))+100*(r=t(r))+(e=t(e));return a>=b&&a<=R},k=Object.freeze({__proto__:null,BASE_YEAR:d,BASE_MONTH:1,BASE_DAY:21,BASE_VALUE:b,MAX_YEAR:O,MAX_MONTH:12,MAX_DAY:31,MAX_VALUE:R,isLeapYear:j,getMonthDays:m,getYearDays:I,getTotalDaysBeforeYear:w,getTotalDaysBeforeMonth:H,getTotalDays:N,isDateInRange:U,isValidDate:function(n,r,e){if(n=t(n),r=t(r),e=t(e),n<d||n>O)return!1;if(n===d){if(r<1)return!1;if(1===r&&e<21)return!1}if(n===O){if(r>12)return!1;if(12===r&&e>31)return!1}return!(r<1||r>12)&&(!(e<1)&&e<=m(n,r))}}),x=function(n,r,e){if(n=t(n),r=t(r),e=t(e),!U(n,r,e))throw new RangeError("지원되지 않는 날짜입니다. 입력한 날짜: ".concat(n,"-").concat(r,"-").concat(e));var a=Math.min(n,i),o=n>i?11:r,u=1,f=E(a,o,u,!0),c=N(n,r,e);u+=c-20-f;for(var l=c-20,h=2411389+l-1,M=(l+1)%7,s=o===A(a);u<1;)s?s=!1:(0===--o&&(o=12,a--),s=o===A(a)),u+=s?_(a,o):g(a,o);return{year:a,month:o,day:u,isLeapMonth:s,secha:L(a),wolgeon:s?"":S(a,o),iljin:T(h),julianDay:h,dayOfWeek:M}},z=function(n,r,e,a){if(n=t(n),r=t(r),e=t(e),!B(n,r,e))throw new RangeError("지원되지 않는 날짜입니다. 입력한 날짜: ".concat(n,"-").concat(r,"-").concat(e));for(var o=n,u=r,i=e+(E(n,r,e,a)-(N(n,r,e)-20)),f=m(o,u);i>f;)i-=f,++u>12&&(u=1,o++),f=m(o,u);return{year:o,month:u,day:i}},W=Y,F=k,J={toLunar:x,toSolar:z,LunarTable:Y,SolarTable:k,LunarData:W,SolarData:F};return n.LunarData=W,n.LunarTable=Y,n.SolarData=F,n.SolarTable=k,n.default=J,n.toLunar=x,n.toSolar=z,Object.defineProperty(n,"__esModule",{value:!0}),n}({});
|
|
2
2
|
//# sourceMappingURL=kor-lunar.min.js.map
|
|
@@ -83,3 +83,21 @@ export declare const isDateInRange: (year: number, month: number, day: number) =
|
|
|
83
83
|
* @returns 유효한 날짜이면 true
|
|
84
84
|
*/
|
|
85
85
|
export declare const isValidDate: (year: number, month: number, day: number, isLeapMonth: boolean) => boolean;
|
|
86
|
+
/**
|
|
87
|
+
* 해당 월의 0-based 연속적인 월 인덱스를 반환합니다.
|
|
88
|
+
* @param year 1890년 ~ 2050년
|
|
89
|
+
* @param month 1월 ~ 12월
|
|
90
|
+
* @param isLeapMonth 대상이 윤달이면 true
|
|
91
|
+
* @returns 윤달이 있는 해는 0~12 (13개월), 없는 해는 0~11 (12개월)
|
|
92
|
+
*/
|
|
93
|
+
export declare const getMonthIndex: (year: number, month: number, isLeapMonth: boolean) => number;
|
|
94
|
+
/**
|
|
95
|
+
* 0-based 연속적인 월 인덱스에 해당하는 월과 윤달 여부를 반환합니다.
|
|
96
|
+
* @param year 1890년 ~ 2050년
|
|
97
|
+
* @param monthIndex 윤달이 있는 해는 0~12 (13개월), 없는 해는 0~11 (12개월)
|
|
98
|
+
* @returns month (1~12)와 isLeapMonth 여부
|
|
99
|
+
*/
|
|
100
|
+
export declare const getMonthFromIndex: (year: number, monthIndex: number) => {
|
|
101
|
+
month: number;
|
|
102
|
+
isLeapMonth: boolean;
|
|
103
|
+
};
|
package/package.json
CHANGED
|
File without changes
|