@@ -107,27 +107,94 @@ class MSSQLHelper {
107107 formatDate ( date , format ) {
108108 // UTC 기준으로 날짜/시간 추출
109109 const map = {
110- 'YYYY' : date . getUTCFullYear ( ) ,
110+ // Year
111+ 'YYYY' : String ( date . getUTCFullYear ( ) ) ,
112+ 'yyyy' : String ( date . getUTCFullYear ( ) ) ,
111113 'YY' : String ( date . getUTCFullYear ( ) ) . slice ( - 2 ) ,
114+ 'yy' : String ( date . getUTCFullYear ( ) ) . slice ( - 2 ) ,
115+ // Month
112116 'MM' : String ( date . getUTCMonth ( ) + 1 ) . padStart ( 2 , '0' ) ,
113- 'M' : date . getUTCMonth ( ) + 1 ,
117+ 'M' : String ( date . getUTCMonth ( ) + 1 ) ,
118+ // Day
114119 'DD' : String ( date . getUTCDate ( ) ) . padStart ( 2 , '0' ) ,
115- 'D' : date . getUTCDate ( ) ,
120+ 'dd' : String ( date . getUTCDate ( ) ) . padStart ( 2 , '0' ) ,
121+ 'D' : String ( date . getUTCDate ( ) ) ,
122+ 'd' : String ( date . getUTCDate ( ) ) ,
123+ // Hour
116124 'HH' : String ( date . getUTCHours ( ) ) . padStart ( 2 , '0' ) ,
117- 'H' : date . getUTCHours ( ) ,
125+ 'hh' : String ( date . getUTCHours ( ) ) . padStart ( 2 , '0' ) ,
126+ 'H' : String ( date . getUTCHours ( ) ) ,
127+ 'h' : String ( date . getUTCHours ( ) ) ,
128+ // Minute
118129 'mm' : String ( date . getUTCMinutes ( ) ) . padStart ( 2 , '0' ) ,
119- 'm' : date . getUTCMinutes ( ) ,
130+ 'm' : String ( date . getUTCMinutes ( ) ) ,
131+ // Second
120132 'ss' : String ( date . getUTCSeconds ( ) ) . padStart ( 2 , '0' ) ,
121- 's' : date . getUTCSeconds ( ) ,
122- 'SSS' : String ( date . getUTCMilliseconds ( ) ) . padStart ( 3 , '0' )
133+ 's' : String ( date . getUTCSeconds ( ) ) ,
134+ // Milliseconds
135+ 'SSS' : String ( date . getUTCMilliseconds ( ) ) . padStart ( 3 , '0' ) ,
136+ 'sss' : String ( date . getUTCMilliseconds ( ) ) . padStart ( 3 , '0' )
123137 } ;
124138
125139 let result = format ;
126- // 긴 패턴부터 먼저 치환 (YYYY를 YY보다 먼저)
127- [ 'YYYY' , 'MM' , 'DD' , 'HH' , 'mm' , 'ss' , 'SSS' , 'YY' , 'M' , 'D' , 'H' , 'm' , 's' ] . forEach ( token => {
140+ // 긴 패턴부터 먼저 치환해 부분 중복을 방지
141+ const tokensInOrder = [
142+ 'YYYY' , 'yyyy' , 'SSS' , 'sss' ,
143+ 'HH' , 'hh' , 'MM' , 'DD' , 'dd' , 'YY' , 'yy' ,
144+ 'H' , 'h' , 'M' , 'D' , 'd' , 'mm' , 'ss' , 'm' , 's'
145+ ] ;
146+ tokensInOrder . forEach ( token => {
147+ result = result . replace ( new RegExp ( token , 'g' ) , map [ token ] ) ;
148+ } ) ;
149+ return result ;
150+ }
151+
152+ /**
153+ * 날짜 포맷팅 함수 (로컬 시간 기준)
154+ * @param {Date } date - Date 객체
155+ * @param {string } format - 포맷 문자열 (yyyy, MM, dd, HH, mm, ss 등)
156+ * @returns {string } 포맷팅된 날짜 문자열
157+ */
158+ formatDateLocal ( date , format ) {
159+ const map = {
160+ // Year
161+ 'YYYY' : String ( date . getFullYear ( ) ) ,
162+ 'yyyy' : String ( date . getFullYear ( ) ) ,
163+ 'YY' : String ( date . getFullYear ( ) ) . slice ( - 2 ) ,
164+ 'yy' : String ( date . getFullYear ( ) ) . slice ( - 2 ) ,
165+ // Month
166+ 'MM' : String ( date . getMonth ( ) + 1 ) . padStart ( 2 , '0' ) ,
167+ 'M' : String ( date . getMonth ( ) + 1 ) ,
168+ // Day
169+ 'DD' : String ( date . getDate ( ) ) . padStart ( 2 , '0' ) ,
170+ 'dd' : String ( date . getDate ( ) ) . padStart ( 2 , '0' ) ,
171+ 'D' : String ( date . getDate ( ) ) ,
172+ 'd' : String ( date . getDate ( ) ) ,
173+ // Hour
174+ 'HH' : String ( date . getHours ( ) ) . padStart ( 2 , '0' ) ,
175+ 'hh' : String ( date . getHours ( ) ) . padStart ( 2 , '0' ) ,
176+ 'H' : String ( date . getHours ( ) ) ,
177+ 'h' : String ( date . getHours ( ) ) ,
178+ // Minute
179+ 'mm' : String ( date . getMinutes ( ) ) . padStart ( 2 , '0' ) ,
180+ 'm' : String ( date . getMinutes ( ) ) ,
181+ // Second
182+ 'ss' : String ( date . getSeconds ( ) ) . padStart ( 2 , '0' ) ,
183+ 's' : String ( date . getSeconds ( ) ) ,
184+ // Milliseconds
185+ 'SSS' : String ( date . getMilliseconds ( ) ) . padStart ( 3 , '0' ) ,
186+ 'sss' : String ( date . getMilliseconds ( ) ) . padStart ( 3 , '0' )
187+ } ;
188+
189+ let result = format ;
190+ const tokensInOrder = [
191+ 'YYYY' , 'yyyy' , 'SSS' , 'sss' ,
192+ 'HH' , 'hh' , 'MM' , 'DD' , 'dd' , 'YY' , 'yy' ,
193+ 'H' , 'h' , 'M' , 'D' , 'd' , 'mm' , 'ss' , 'm' , 's'
194+ ] ;
195+ tokensInOrder . forEach ( token => {
128196 result = result . replace ( new RegExp ( token , 'g' ) , map [ token ] ) ;
129197 } ) ;
130-
131198 return result ;
132199 }
133200
0 commit comments