@@ -122,6 +122,14 @@ describe('string conversion', function () {
122
122
let date = new CalendarDate ( 123 , 2 , 3 ) ;
123
123
expect ( date . toString ( ) ) . toBe ( '0123-02-03' ) ;
124
124
} ) ;
125
+
126
+ it ( 'should stringify a BC date' , function ( ) {
127
+ let date = new CalendarDate ( 'BC' , 1 , 1 , 1 ) ;
128
+ expect ( date . toString ( ) ) . toBe ( '0000-01-01' ) ;
129
+
130
+ date = new CalendarDate ( 'BC' , 2 , 1 , 1 ) ;
131
+ expect ( date . toString ( ) ) . toBe ( '-000001-01-01' ) ;
132
+ } ) ;
125
133
} ) ;
126
134
127
135
describe ( 'parseDateTime' , function ( ) {
@@ -155,6 +163,16 @@ describe('string conversion', function () {
155
163
expect ( date ) . toEqual ( expected ) ;
156
164
} ) ;
157
165
166
+ it ( 'should parse BC dates' , function ( ) {
167
+ let date = parseDateTime ( '0000-01-01' ) ;
168
+ let expected = new CalendarDateTime ( 'BC' , 1 , 1 , 1 ) ;
169
+ expect ( date ) . toEqual ( expected ) ;
170
+
171
+ date = parseDateTime ( '-000002-01-01' ) ;
172
+ expected = new CalendarDateTime ( 'BC' , 3 , 1 , 1 ) ;
173
+ expect ( date ) . toEqual ( expected ) ;
174
+ } ) ;
175
+
158
176
it ( 'should error if date is not padded' , function ( ) {
159
177
expect ( ( ) => parseDateTime ( '123-02-03T12:24:45' ) ) . toThrow ( ) ;
160
178
expect ( ( ) => parseDateTime ( '2020-2-03T12:24:45' ) ) . toThrow ( ) ;
@@ -193,6 +211,14 @@ describe('string conversion', function () {
193
211
let date = new CalendarDateTime ( 2020 , 2 , 3 , 12 , 23 , 45 , 120 ) ;
194
212
expect ( date . toString ( ) ) . toBe ( '2020-02-03T12:23:45.12' ) ;
195
213
} ) ;
214
+
215
+ it ( 'should stringify a BC date' , function ( ) {
216
+ let date = new CalendarDateTime ( 'BC' , 1 , 1 , 1 ) ;
217
+ expect ( date . toString ( ) ) . toBe ( '0000-01-01T00:00:00' ) ;
218
+
219
+ date = new CalendarDateTime ( 'BC' , 2 , 1 , 1 ) ;
220
+ expect ( date . toString ( ) ) . toBe ( '-000001-01-01T00:00:00' ) ;
221
+ } ) ;
196
222
} ) ;
197
223
198
224
describe ( 'parseZonedDateTime' , function ( ) {
@@ -274,6 +300,16 @@ describe('string conversion', function () {
274
300
expect ( date ) . toEqual ( expected ) ;
275
301
} ) ;
276
302
303
+ it ( 'should parse BC dates' , function ( ) {
304
+ let date = parseZonedDateTime ( '0000-01-01T01:00[America/Los_Angeles]' ) ;
305
+ let expected = new ZonedDateTime ( 'BC' , 1 , 1 , 1 , 'America/Los_Angeles' , - 28378000 , 1 , 0 , 0 ) ;
306
+ expect ( date ) . toEqual ( expected ) ;
307
+
308
+ date = parseZonedDateTime ( '-000002-01-01T01:00[America/Los_Angeles]' ) ;
309
+ expected = new ZonedDateTime ( 'BC' , 3 , 1 , 1 , 'America/Los_Angeles' , - 28378000 , 1 , 0 , 0 ) ;
310
+ expect ( date ) . toEqual ( expected ) ;
311
+ } ) ;
312
+
277
313
it ( 'should error if parsing a date with an invalid offset' , function ( ) {
278
314
expect ( ( ) => parseZonedDateTime ( '2020-02-03T12:24:45.12-04:00[America/Los_Angeles]' ) ) . toThrow ( ) ;
279
315
expect ( ( ) => parseZonedDateTime ( '2020-02-03T12:24:45.12-08:24[America/Los_Angeles]' ) ) . toThrow ( ) ;
@@ -302,6 +338,14 @@ describe('string conversion', function () {
302
338
let date = new ZonedDateTime ( 2020 , 2 , 3 , 'America/Los_Angeles' , - 28800000 , 12 , 24 , 45 , 120 ) ;
303
339
expect ( date . toString ( ) ) . toBe ( '2020-02-03T12:24:45.12-08:00[America/Los_Angeles]' ) ;
304
340
} ) ;
341
+
342
+ it ( 'should stringify a BC date' , function ( ) {
343
+ let date = new ZonedDateTime ( 'BC' , 1 , 1 , 1 , 'UTC' , 0 , 1 , 0 , 0 ) ;
344
+ expect ( date . toString ( ) ) . toBe ( '0000-01-01T01:00:00+00:00[UTC]' ) ;
345
+
346
+ date = new ZonedDateTime ( 'BC' , 2 , 1 , 1 , 'UTC' , 0 , 1 , 0 , 0 ) ;
347
+ expect ( date . toString ( ) ) . toBe ( '-000001-01-01T01:00:00+00:00[UTC]' ) ;
348
+ } ) ;
305
349
} ) ;
306
350
307
351
describe ( 'parseAbsolute' , function ( ) {
@@ -355,6 +399,16 @@ describe('string conversion', function () {
355
399
expect ( date ) . toEqual ( expected ) ;
356
400
} ) ;
357
401
402
+ it ( 'should parse BC dates' , function ( ) {
403
+ let date = parseAbsolute ( '0000-01-01T01:00Z' , 'UTC' ) ;
404
+ let expected = new ZonedDateTime ( 'BC' , 1 , 1 , 1 , 'UTC' , 0 , 1 , 0 , 0 ) ;
405
+ expect ( date ) . toEqual ( expected ) ;
406
+
407
+ date = parseAbsolute ( '-000002-01-01T01:00Z' , 'UTC' ) ;
408
+ expected = new ZonedDateTime ( 'BC' , 3 , 1 , 1 , 'UTC' , 0 , 1 , 0 , 0 ) ;
409
+ expect ( date ) . toEqual ( expected ) ;
410
+ } ) ;
411
+
358
412
it ( 'should error if missing offset or Z' , function ( ) {
359
413
expect ( ( ) => parseAbsolute ( '2020-02-03' ) ) . toThrow ( ) ;
360
414
} ) ;
@@ -375,6 +429,14 @@ describe('string conversion', function () {
375
429
let date = new ZonedDateTime ( 2020 , 2 , 3 , 'America/Los_Angeles' , - 28800000 , 14 , 32 , 45 ) ;
376
430
expect ( date . toAbsoluteString ( ) ) . toBe ( '2020-02-03T22:32:45.000Z' ) ;
377
431
} ) ;
432
+
433
+ it ( 'should stringify a BC date' , function ( ) {
434
+ let date = new ZonedDateTime ( 'BC' , 1 , 1 , 1 , 'UTC' , 0 , 1 , 0 , 0 ) ;
435
+ expect ( date . toAbsoluteString ( ) ) . toBe ( '0000-01-01T01:00:00.000Z' ) ;
436
+
437
+ date = new ZonedDateTime ( 'BC' , 2 , 1 , 1 , 'UTC' , 0 , 1 , 0 , 0 ) ;
438
+ expect ( date . toAbsoluteString ( ) ) . toBe ( '-000001-01-01T01:00:00.000Z' ) ;
439
+ } ) ;
378
440
} ) ;
379
441
380
442
describe ( 'parseDuration' , function ( ) {
0 commit comments