@@ -158,6 +158,23 @@ describe('date formatting', () => {
158158 expect ( formatDate ( date ( 2000 , 1 , 1 , 12 ) , "hh:mm" ) ) . toEqual ( "12:00" ) ;
159159 } ) ;
160160
161+ it ( 'supports 0-11 hour clock formatting' , ( ) => {
162+ const hourZero = date ( 2000 , 1 , 1 , 0 ) ;
163+ const hourSmall = date ( 2000 , 1 , 1 , 1 ) ;
164+ const hour12 = date ( 2000 , 1 , 1 , 12 ) ;
165+ const hourBig = date ( 2000 , 1 , 1 , 13 ) ;
166+
167+ expect ( formatDate ( hourZero , "K:mm" ) ) . toEqual ( "0:00" ) ;
168+ expect ( formatDate ( hourSmall , "K:mm" ) ) . toEqual ( "1:00" ) ;
169+ expect ( formatDate ( hour12 , "K:mm" ) ) . toEqual ( "0:00" ) ;
170+ expect ( formatDate ( hourBig , "K:mm" ) ) . toEqual ( "1:00" ) ;
171+
172+ expect ( formatDate ( hourZero , "KK:mm" ) ) . toEqual ( "00:00" ) ;
173+ expect ( formatDate ( hourSmall , "KK:mm" ) ) . toEqual ( "01:00" ) ;
174+ expect ( formatDate ( hour12 , "KK:mm" ) ) . toEqual ( "00:00" ) ;
175+ expect ( formatDate ( hourBig , "KK:mm" ) ) . toEqual ( "01:00" ) ;
176+ } ) ;
177+
161178 it ( 'supports 24-hour clock formatting' , ( ) => {
162179 const hourSmall = date ( 2000 , 1 , 1 , 1 ) ;
163180 const hourBig = date ( 2000 , 1 , 1 , 23 ) ;
@@ -168,6 +185,23 @@ describe('date formatting', () => {
168185 expect ( formatDate ( hourBig , "HH:mm" ) ) . toEqual ( "23:00" ) ;
169186 } ) ;
170187
188+ it ( 'supports 1-24 hour clock formatting' , ( ) => {
189+ const hourZero = date ( 2000 , 1 , 1 , 0 ) ;
190+ const hourSmall = date ( 2000 , 1 , 1 , 1 ) ;
191+ const hour12 = date ( 2000 , 1 , 1 , 12 ) ;
192+ const hourBig = date ( 2000 , 1 , 1 , 13 ) ;
193+
194+ expect ( formatDate ( hourZero , "k:mm" ) ) . toEqual ( "24:00" ) ;
195+ expect ( formatDate ( hourSmall , "k:mm" ) ) . toEqual ( "1:00" ) ;
196+ expect ( formatDate ( hour12 , "k:mm" ) ) . toEqual ( "12:00" ) ;
197+ expect ( formatDate ( hourBig , "k:mm" ) ) . toEqual ( "13:00" ) ;
198+
199+ expect ( formatDate ( hourZero , "kk:mm" ) ) . toEqual ( "24:00" ) ;
200+ expect ( formatDate ( hourSmall , "kk:mm" ) ) . toEqual ( "01:00" ) ;
201+ expect ( formatDate ( hour12 , "kk:mm" ) ) . toEqual ( "12:00" ) ;
202+ expect ( formatDate ( hourBig , "kk:mm" ) ) . toEqual ( "13:00" ) ;
203+ } ) ;
204+
171205 it ( 'supports day period short formatting' , ( ) => {
172206 expect ( formatDate ( date ( 2000 , 1 , 1 , 1 ) , "hh a" ) ) . toEqual ( "01 AM" ) ;
173207 expect ( formatDate ( date ( 2000 , 1 , 1 , 13 ) , "hh a" ) ) . toEqual ( "01 PM" ) ;
@@ -1115,6 +1149,42 @@ describe('date parsing', () => {
11151149
11161150 expect ( parseDate ( "2014-05-21 00:00:00Z" , "yyyy-MM-dd HH:mm:ssX" ) ) . toEqual ( utcDate ) ;
11171151 } ) ;
1152+
1153+ it ( 'parses 0-11 hour clock formatted value' , ( ) => {
1154+ const hourZero = date ( 2000 , 1 , 1 , 0 ) ;
1155+ const hourSmall = date ( 2000 , 1 , 1 , 1 ) ;
1156+ const hour12 = date ( 2000 , 1 , 1 , 12 ) ;
1157+ const hourBig = date ( 2000 , 1 , 1 , 13 ) ;
1158+
1159+ expect ( parseDate ( "01.01.2000 0:00 am" , "dd.MM.yyyy K:mm a" ) ) . toEqual ( hourZero ) ;
1160+ expect ( parseDate ( "01.01.2000 1:00 am" , "dd.MM.yyyy K:mm a" ) ) . toEqual ( hourSmall ) ;
1161+ expect ( parseDate ( "01.01.2000 0:00 pm" , "dd.MM.yyyy K:mm a" ) ) . toEqual ( hour12 ) ;
1162+ expect ( parseDate ( "01.01.2000 1:00 pm" , "dd.MM.yyyy K:mm a" ) ) . toEqual ( hourBig ) ;
1163+
1164+ expect ( parseDate ( "01.01.2000 00:00 am" , "dd.MM.yyyy KK:mm a" ) ) . toEqual ( hourZero ) ;
1165+ expect ( parseDate ( "01.01.2000 01:00 am" , "dd.MM.yyyy KK:mm a" ) ) . toEqual ( hourSmall ) ;
1166+ expect ( parseDate ( "01.01.2000 00:00 pm" , "dd.MM.yyyy KK:mm a" ) ) . toEqual ( hour12 ) ;
1167+ expect ( parseDate ( "01.01.2000 01:00 pm" , "dd.MM.yyyy KK:mm a" ) ) . toEqual ( hourBig ) ;
1168+ } ) ;
1169+
1170+ it ( 'parses 1-24 hour clock formatted value' , ( ) => {
1171+ const hourZero = date ( 2000 , 1 , 1 , 0 ) ;
1172+ const hourSmall = date ( 2000 , 1 , 1 , 1 ) ;
1173+ const hour12 = date ( 2000 , 1 , 1 , 12 ) ;
1174+ const hourBig = date ( 2000 , 1 , 1 , 13 ) ;
1175+
1176+ expect ( parseDate ( "01.01.2000 0:00" , "dd.MM.yyyy k:mm" ) ) . toBeNull ( ) ;
1177+ expect ( parseDate ( "01.01.2000 24:00" , "dd.MM.yyyy k:mm" ) ) . toEqual ( hourZero ) ;
1178+ expect ( parseDate ( "01.01.2000 1:00" , "dd.MM.yyyy k:mm" ) ) . toEqual ( hourSmall ) ;
1179+ expect ( parseDate ( "01.01.2000 12:00" , "dd.MM.yyyy k:mm" ) ) . toEqual ( hour12 ) ;
1180+ expect ( parseDate ( "01.01.2000 13:00" , "dd.MM.yyyy k:mm" ) ) . toEqual ( hourBig ) ;
1181+
1182+ expect ( parseDate ( "01.01.2000 00:00" , "dd.MM.yyyy kk:mm" ) ) . toBeNull ( ) ;
1183+ expect ( parseDate ( "01.01.2000 24:00" , "dd.MM.yyyy kk:mm" ) ) . toEqual ( hourZero ) ;
1184+ expect ( parseDate ( "01.01.2000 01:00" , "dd.MM.yyyy kk:mm" ) ) . toEqual ( hourSmall ) ;
1185+ expect ( parseDate ( "01.01.2000 12:00" , "dd.MM.yyyy kk:mm" ) ) . toEqual ( hour12 ) ;
1186+ expect ( parseDate ( "01.01.2000 13:00" , "dd.MM.yyyy kk:mm" ) ) . toEqual ( hourBig ) ;
1187+ } ) ;
11181188} ) ;
11191189
11201190describe ( 'splitDateFormat' , ( ) => {
@@ -1349,9 +1419,17 @@ describe('splitDateFormat', () => {
13491419 type : 'hour' ,
13501420 pattern : 'H' ,
13511421 hour12 : false
1422+ } , {
1423+ type : 'hour' ,
1424+ pattern : 'k' ,
1425+ hour12 : false
1426+ } , {
1427+ type : 'hour' ,
1428+ pattern : 'K' ,
1429+ hour12 : true
13521430 } ] ;
13531431
1354- expect ( splitDateFormat ( 'hH ' ) ) . toEqual ( expected ) ;
1432+ expect ( splitDateFormat ( 'hHkK ' ) ) . toEqual ( expected ) ;
13551433 } ) ;
13561434} ) ;
13571435
0 commit comments