@3o3/date 0.1.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/CHANGELOG.md +12 -0
- package/dist/date.d.ts +28 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +114 -0
- package/esm/date.mjs +97 -0
- package/esm/index.mjs +1 -0
- package/package.json +69 -0
package/CHANGELOG.md
ADDED
package/dist/date.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/** @3o3docs-ignore */
|
|
2
|
+
import { Locale } from 'date-fns';
|
|
3
|
+
export declare type DateFnsDateType = number | Date;
|
|
4
|
+
/** @Description 입력받은 문자열을 Date로 변환합니다*/
|
|
5
|
+
export declare function parseDateString(dateString: string): Date;
|
|
6
|
+
/** @description 월 일 요일을 표기합니다. */
|
|
7
|
+
export declare const formatMMdEEE: (date: string) => string;
|
|
8
|
+
/** @description 월 일 요일을 표기합니다. */
|
|
9
|
+
export declare const formatYYYYMMdEEE: (date: string) => string;
|
|
10
|
+
export declare function formatDateTime(dateTimeString: string): string;
|
|
11
|
+
/** @description 원하는 date-dns에서 지원하는 format에 대응하는 값으로 파싱하는 함수입니다. */
|
|
12
|
+
export declare const format: (date: DateFnsDateType, format: string, _local?: Locale) => string;
|
|
13
|
+
/** @description 유효한 년도인지 체크하는 함수입니다. */
|
|
14
|
+
export declare function isValidYear(value: string | number): boolean;
|
|
15
|
+
/** @description 유효한 월인지 체크하는 함수입니다. */
|
|
16
|
+
export declare function isValidMonth(value: string | number): boolean;
|
|
17
|
+
/** @description 유효한 월인지 체크하는 함수입니다. */
|
|
18
|
+
export declare function isValidDayOfMonth(value: string | number): boolean;
|
|
19
|
+
/** @Decription 1년 52주중 몇번째 주인지 (년도+몇주) 반환하는 함수입니다. */
|
|
20
|
+
export declare const getYearWeekNumber: (date: number | Date, weekStartsOn: 0 | 1 | 2 | 3 | 4 | 5 | 6, firstWeekContainsDate: 1 | 2 | 3 | 4 | 5 | 6 | 7) => string;
|
|
21
|
+
/** @description 날짜, 시간, 분, 초, isoTime 등을 세부적으로 나눠서 반환하는 함수입니다. */
|
|
22
|
+
export declare function getDateDetails(date: Date): {
|
|
23
|
+
isoTime: string;
|
|
24
|
+
days: string;
|
|
25
|
+
months: string;
|
|
26
|
+
hours: string;
|
|
27
|
+
isDownTime: boolean;
|
|
28
|
+
};
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var dateFns = require('date-fns');
|
|
6
|
+
var utils = require('@3o3/utils');
|
|
7
|
+
var locale = require('date-fns/locale/ko/index.js');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var locale__default = /*#__PURE__*/_interopDefaultLegacy(locale);
|
|
12
|
+
|
|
13
|
+
/** @3o3docs-ignore */
|
|
14
|
+
/** @Description 입력받은 문자열을 Date로 변환합니다*/
|
|
15
|
+
function parseDateString(dateString) {
|
|
16
|
+
var date = new Date(dateString);
|
|
17
|
+
if (dateFns.isValid(date)) {
|
|
18
|
+
return date;
|
|
19
|
+
}
|
|
20
|
+
throw new Error('Invalid date format');
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** @description 월 일 요일을 표기합니다. */
|
|
24
|
+
var formatMMdEEE = function formatMMdEEE(date) {
|
|
25
|
+
if (utils.isBlank(date)) {
|
|
26
|
+
return '-';
|
|
27
|
+
}
|
|
28
|
+
var _date = parseDateString(date.replace(/-/g, '/'));
|
|
29
|
+
return format(_date, 'MM월 d일 EEE');
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
/** @description 월 일 요일을 표기합니다. */
|
|
33
|
+
var formatYYYYMMdEEE = function formatYYYYMMdEEE(date) {
|
|
34
|
+
if (utils.isBlank(date)) {
|
|
35
|
+
return '-';
|
|
36
|
+
}
|
|
37
|
+
var _date = parseDateString(date.replace(/-/g, '/'));
|
|
38
|
+
return format(_date, 'yyyy년 MM월 d일 EEE');
|
|
39
|
+
};
|
|
40
|
+
function formatDateTime(dateTimeString) {
|
|
41
|
+
if (utils.isBlank(dateTimeString)) {
|
|
42
|
+
return '-';
|
|
43
|
+
}
|
|
44
|
+
var _date = parseDateString(dateTimeString.trim().replace(/\//g, '-').replace(/\s/, 'T'));
|
|
45
|
+
return format(dateFns.parseISO(_date.toISOString()), 'yyyy-MM-dd HH:mm');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** @description 원하는 date-dns에서 지원하는 format에 대응하는 값으로 파싱하는 함수입니다. */
|
|
49
|
+
var format = function format(date, _format2, _local) {
|
|
50
|
+
return dateFns.format(date, _format2, {
|
|
51
|
+
locale: _local !== null && _local !== void 0 ? _local : locale__default["default"]
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/** @description 유효한 년도인지 체크하는 함수입니다. */
|
|
56
|
+
function isValidYear(value) {
|
|
57
|
+
var year = Number(value);
|
|
58
|
+
if (isNaN(year)) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
return year >= 1900 && year <= 2099;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/** @description 유효한 월인지 체크하는 함수입니다. */
|
|
65
|
+
function isValidMonth(value) {
|
|
66
|
+
var month = Number(value);
|
|
67
|
+
if (isNaN(month)) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
return month > 0 && month <= 12;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/** @description 유효한 월인지 체크하는 함수입니다. */
|
|
74
|
+
function isValidDayOfMonth(value) {
|
|
75
|
+
var dayOfMonth = Number(value);
|
|
76
|
+
if (isNaN(dayOfMonth)) {
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
return dayOfMonth > 0 && dayOfMonth <= 31;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/** @Decription 1년 52주중 몇번째 주인지 (년도+몇주) 반환하는 함수입니다. */
|
|
83
|
+
var getYearWeekNumber = function getYearWeekNumber(date, weekStartsOn, firstWeekContainsDate) {
|
|
84
|
+
return dateFns.getYear(date).toString() + dateFns.getWeek(new Date(date), {
|
|
85
|
+
weekStartsOn: weekStartsOn,
|
|
86
|
+
firstWeekContainsDate: firstWeekContainsDate
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
/** @description 날짜, 시간, 분, 초, isoTime 등을 세부적으로 나눠서 반환하는 함수입니다. */
|
|
91
|
+
function getDateDetails(date) {
|
|
92
|
+
var isoTime = dateFns.formatISO(date);
|
|
93
|
+
var days = dateFns.format(date, 'd');
|
|
94
|
+
var months = dateFns.format(date, 'L');
|
|
95
|
+
var hours = dateFns.format(date, 'H');
|
|
96
|
+
return {
|
|
97
|
+
isoTime: isoTime,
|
|
98
|
+
days: days,
|
|
99
|
+
months: months,
|
|
100
|
+
hours: hours,
|
|
101
|
+
isDownTime: Number(hours) > 23 || Number(hours) < 9
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
exports.format = format;
|
|
106
|
+
exports.formatDateTime = formatDateTime;
|
|
107
|
+
exports.formatMMdEEE = formatMMdEEE;
|
|
108
|
+
exports.formatYYYYMMdEEE = formatYYYYMMdEEE;
|
|
109
|
+
exports.getDateDetails = getDateDetails;
|
|
110
|
+
exports.getYearWeekNumber = getYearWeekNumber;
|
|
111
|
+
exports.isValidDayOfMonth = isValidDayOfMonth;
|
|
112
|
+
exports.isValidMonth = isValidMonth;
|
|
113
|
+
exports.isValidYear = isValidYear;
|
|
114
|
+
exports.parseDateString = parseDateString;
|
package/esm/date.mjs
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { isValid, parseISO, format as format$1, getYear, getWeek, formatISO } from 'date-fns';
|
|
2
|
+
import { isBlank } from '@3o3/utils';
|
|
3
|
+
import locale from 'date-fns/locale/ko/index.js';
|
|
4
|
+
|
|
5
|
+
/** @3o3docs-ignore */
|
|
6
|
+
/** @Description 입력받은 문자열을 Date로 변환합니다*/
|
|
7
|
+
function parseDateString(dateString) {
|
|
8
|
+
var date = new Date(dateString);
|
|
9
|
+
if (isValid(date)) {
|
|
10
|
+
return date;
|
|
11
|
+
}
|
|
12
|
+
throw new Error('Invalid date format');
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/** @description 월 일 요일을 표기합니다. */
|
|
16
|
+
var formatMMdEEE = function formatMMdEEE(date) {
|
|
17
|
+
if (isBlank(date)) {
|
|
18
|
+
return '-';
|
|
19
|
+
}
|
|
20
|
+
var _date = parseDateString(date.replace(/-/g, '/'));
|
|
21
|
+
return format(_date, 'MM월 d일 EEE');
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
/** @description 월 일 요일을 표기합니다. */
|
|
25
|
+
var formatYYYYMMdEEE = function formatYYYYMMdEEE(date) {
|
|
26
|
+
if (isBlank(date)) {
|
|
27
|
+
return '-';
|
|
28
|
+
}
|
|
29
|
+
var _date = parseDateString(date.replace(/-/g, '/'));
|
|
30
|
+
return format(_date, 'yyyy년 MM월 d일 EEE');
|
|
31
|
+
};
|
|
32
|
+
function formatDateTime(dateTimeString) {
|
|
33
|
+
if (isBlank(dateTimeString)) {
|
|
34
|
+
return '-';
|
|
35
|
+
}
|
|
36
|
+
var _date = parseDateString(dateTimeString.trim().replace(/\//g, '-').replace(/\s/, 'T'));
|
|
37
|
+
return format(parseISO(_date.toISOString()), 'yyyy-MM-dd HH:mm');
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/** @description 원하는 date-dns에서 지원하는 format에 대응하는 값으로 파싱하는 함수입니다. */
|
|
41
|
+
var format = function format(date, _format2, _local) {
|
|
42
|
+
return format$1(date, _format2, {
|
|
43
|
+
locale: _local !== null && _local !== void 0 ? _local : locale
|
|
44
|
+
});
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/** @description 유효한 년도인지 체크하는 함수입니다. */
|
|
48
|
+
function isValidYear(value) {
|
|
49
|
+
var year = Number(value);
|
|
50
|
+
if (isNaN(year)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return year >= 1900 && year <= 2099;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** @description 유효한 월인지 체크하는 함수입니다. */
|
|
57
|
+
function isValidMonth(value) {
|
|
58
|
+
var month = Number(value);
|
|
59
|
+
if (isNaN(month)) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
return month > 0 && month <= 12;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** @description 유효한 월인지 체크하는 함수입니다. */
|
|
66
|
+
function isValidDayOfMonth(value) {
|
|
67
|
+
var dayOfMonth = Number(value);
|
|
68
|
+
if (isNaN(dayOfMonth)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
return dayOfMonth > 0 && dayOfMonth <= 31;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** @Decription 1년 52주중 몇번째 주인지 (년도+몇주) 반환하는 함수입니다. */
|
|
75
|
+
var getYearWeekNumber = function getYearWeekNumber(date, weekStartsOn, firstWeekContainsDate) {
|
|
76
|
+
return getYear(date).toString() + getWeek(new Date(date), {
|
|
77
|
+
weekStartsOn: weekStartsOn,
|
|
78
|
+
firstWeekContainsDate: firstWeekContainsDate
|
|
79
|
+
});
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
/** @description 날짜, 시간, 분, 초, isoTime 등을 세부적으로 나눠서 반환하는 함수입니다. */
|
|
83
|
+
function getDateDetails(date) {
|
|
84
|
+
var isoTime = formatISO(date);
|
|
85
|
+
var days = format$1(date, 'd');
|
|
86
|
+
var months = format$1(date, 'L');
|
|
87
|
+
var hours = format$1(date, 'H');
|
|
88
|
+
return {
|
|
89
|
+
isoTime: isoTime,
|
|
90
|
+
days: days,
|
|
91
|
+
months: months,
|
|
92
|
+
hours: hours,
|
|
93
|
+
isDownTime: Number(hours) > 23 || Number(hours) < 9
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export { format, formatDateTime, formatMMdEEE, formatYYYYMMdEEE, getDateDetails, getYearWeekNumber, isValidDayOfMonth, isValidMonth, isValidYear, parseDateString };
|
package/esm/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { format, formatDateTime, formatMMdEEE, formatYYYYMMdEEE, getDateDetails, getYearWeekNumber, isValidDayOfMonth, isValidMonth, isValidYear, parseDateString } from './date.mjs';
|
package/package.json
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@3o3/date",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"sideEffects": false,
|
|
5
|
+
"exports": {
|
|
6
|
+
".": {
|
|
7
|
+
"require": "./dist/index.js",
|
|
8
|
+
"import": "./esm/index.mjs",
|
|
9
|
+
"types": "./dist/index.d.ts"
|
|
10
|
+
},
|
|
11
|
+
"./package.json": "./package.json"
|
|
12
|
+
},
|
|
13
|
+
"main": "./dist/index.js",
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"esm"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "rm -rf dist esm && tsc --declaration --emitDeclarationOnly --declarationDir dist && rollup -c rollup.config.js",
|
|
20
|
+
"prepack": "yarn build",
|
|
21
|
+
"typecheck": "tsc --noEmit"
|
|
22
|
+
},
|
|
23
|
+
"dependencies": {
|
|
24
|
+
"@3o3/utils": "^0.1.0",
|
|
25
|
+
"date-fns": "^2.25.0"
|
|
26
|
+
},
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"@3o3/rollup-config": "^0.1.0",
|
|
29
|
+
"@babel/core": "^7",
|
|
30
|
+
"@babel/plugin-proposal-class-properties": "^7.14.5",
|
|
31
|
+
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.14.5",
|
|
32
|
+
"@babel/plugin-proposal-optional-chaining": "^7.14.5",
|
|
33
|
+
"@babel/preset-env": "^7.14.8",
|
|
34
|
+
"@babel/preset-typescript": "^7.18.6",
|
|
35
|
+
"@rollup/plugin-babel": "^5.3.1",
|
|
36
|
+
"@rollup/plugin-commonjs": "^22.0.1",
|
|
37
|
+
"@rollup/plugin-json": "^4.1.0",
|
|
38
|
+
"@rollup/plugin-node-resolve": "^13.3.0",
|
|
39
|
+
"@types/babel__core": "^7",
|
|
40
|
+
"@types/babel__preset-env": "^7",
|
|
41
|
+
"@types/jest": "^28.1.8",
|
|
42
|
+
"@types/node": "^14.0.23",
|
|
43
|
+
"babel-jest": "^29.0.1",
|
|
44
|
+
"builtin-modules": "^3.1.0",
|
|
45
|
+
"date-fns": "^2.25.0",
|
|
46
|
+
"jest": "^29.0.1",
|
|
47
|
+
"jest-environment-jsdom": "^28.1.1",
|
|
48
|
+
"jest-mock": "^27.4.2",
|
|
49
|
+
"rollup": "^2.77.0",
|
|
50
|
+
"tslib": "^2.0.0",
|
|
51
|
+
"typescript": "4.8.3"
|
|
52
|
+
},
|
|
53
|
+
"publishConfig": {
|
|
54
|
+
"access": "public",
|
|
55
|
+
"exports": {
|
|
56
|
+
".": {
|
|
57
|
+
"require": "./dist/index.js",
|
|
58
|
+
"import": "./esm/index.mjs",
|
|
59
|
+
"types": "./dist/index.d.ts"
|
|
60
|
+
},
|
|
61
|
+
"./package.json": "./package.json"
|
|
62
|
+
},
|
|
63
|
+
"import": "./esm/index.mjs",
|
|
64
|
+
"main": "./dist/index.js",
|
|
65
|
+
"module": "./esm/index.mjs",
|
|
66
|
+
"types": "./dist/index.d.ts"
|
|
67
|
+
},
|
|
68
|
+
"module": "./esm/index.mjs"
|
|
69
|
+
}
|