@prairielearn/formatter 1.4.0 → 1.4.2

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/src/date.test.ts CHANGED
@@ -273,6 +273,14 @@ describe('date formatting', () => {
273
273
  const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 2));
274
274
  const date = new Date(Date.UTC(2018, 0, 1, 13, 34, 7));
275
275
  assert.equal(formatDateFriendly(date, 'UTC', { baseDate }), 'today, 1:34:07pm (UTC)');
276
+ assert.equal(
277
+ formatDateFriendly(date, 'UTC', { baseDate, maxPrecision: 'minute' }),
278
+ 'today, 1:34pm (UTC)',
279
+ );
280
+ assert.equal(
281
+ formatDateFriendly(date, 'UTC', { baseDate, maxPrecision: 'hour' }),
282
+ 'today, 1pm (UTC)',
283
+ );
276
284
  });
277
285
 
278
286
  it('should handle a time with minutes', () => {
@@ -298,128 +306,407 @@ describe('date formatting', () => {
298
306
  const date = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
299
307
  assert.equal(formatDateFriendly(date, 'UTC', { baseDate }), 'today, 12pm (UTC)');
300
308
  });
301
- });
302
-
303
- describe('formatDateRangeFriendly()', () => {
304
- it('should handle two different dates', () => {
305
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
306
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
307
- const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
308
- assert.equal(
309
- formatDateRangeFriendly(start, end, 'UTC', { baseDate }),
310
- 'today, 12:34pm to Wed, Jan\u00a03, 10am (UTC)',
311
- );
312
- });
313
-
314
- it('should handle the same date with different times', () => {
315
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
316
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
317
- const end = new Date(Date.UTC(2018, 0, 1, 13, 0, 0));
318
- assert.equal(
319
- formatDateRangeFriendly(start, end, 'UTC', { baseDate }),
320
- 'today, 12:34pm to 1pm (UTC)',
321
- );
322
- });
323
-
324
- it('should handle the same date with the same time', () => {
325
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
326
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
327
- const end = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
328
- assert.equal(
329
- formatDateRangeFriendly(start, end, 'UTC', { baseDate }),
330
- 'today, 12:34pm (UTC)',
331
- );
332
- });
333
-
334
- it('should handle two different dates with the time first', () => {
335
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
336
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
337
- const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
338
- assert.equal(
339
- formatDateRangeFriendly(start, end, 'UTC', { baseDate, timeFirst: true }),
340
- '12:34pm today to 10am Wed, Jan\u00a03 (UTC)',
341
- );
342
- });
343
-
344
- it('should handle the same date with different times with the time first', () => {
345
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
346
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
347
- const end = new Date(Date.UTC(2018, 0, 1, 13, 0, 0));
348
- assert.equal(
349
- formatDateRangeFriendly(start, end, 'UTC', { baseDate, timeFirst: true }),
350
- '12:34pm to 1pm today (UTC)',
351
- );
352
- });
353
-
354
- it('should handle the same date with the same time and the time first', () => {
355
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
356
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
357
- const end = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
358
- assert.equal(
359
- formatDateRangeFriendly(start, end, 'UTC', { baseDate, timeFirst: true }),
360
- '12:34pm today (UTC)',
361
- );
362
- });
363
309
 
364
- it('should handle two different dates without the timezone', () => {
365
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
366
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
367
- const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
368
- assert.equal(
369
- formatDateRangeFriendly(start, end, 'UTC', { baseDate, includeTz: false }),
370
- 'today, 12:34pm to Wed, Jan\u00a03, 10am',
371
- );
372
- });
373
-
374
- it('should handle two different dates with only dates and without the timezone', () => {
375
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
376
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
377
- const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
378
- assert.equal(
379
- formatDateRangeFriendly(start, end, 'UTC', {
380
- baseDate,
381
- dateOnly: true,
382
- includeTz: false,
383
- }),
384
- 'today to Wed, Jan\u00a03',
385
- );
386
- });
387
-
388
- it('should handle two different dates with time first and without the timezone', () => {
389
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
390
- const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
391
- const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
392
- assert.equal(
393
- formatDateRangeFriendly(start, end, 'UTC', {
394
- baseDate,
395
- timeFirst: true,
396
- includeTz: false,
397
- }),
398
- '12:34pm today to 10am Wed, Jan\u00a03',
399
- );
400
- });
401
-
402
- it('should handle two different dates in CST', () => {
403
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
404
- const start = new Date(Date.UTC(2018, 0, 1, 0, 34, 0));
405
- const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
406
- assert.equal(
407
- formatDateRangeFriendly(start, end, 'America/Chicago', { baseDate }),
408
- 'yesterday, 6:34pm to Wed, Jan\u00a03, 4am (CST)',
409
- );
410
- });
411
-
412
- it('should handle two different dates in CDT without the timezone', () => {
413
- const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
414
- const start = new Date(Date.UTC(2018, 0, 1, 0, 34, 0));
415
- const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
416
- assert.equal(
417
- formatDateRangeFriendly(start, end, 'America/Chicago', {
418
- baseDate,
419
- includeTz: false,
420
- }),
421
- 'yesterday, 6:34pm to Wed, Jan\u00a03, 4am',
422
- );
310
+ describe('maxPrecision option', () => {
311
+ it('should limit to hour precision when maxPrecision is "hour"', () => {
312
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 17));
313
+ const date = new Date(Date.UTC(2018, 0, 1, 15, 45, 17));
314
+ assert.equal(
315
+ formatDateFriendly(date, 'UTC', {
316
+ baseDate,
317
+ maxPrecision: 'hour',
318
+ timeOnly: true,
319
+ includeTz: false,
320
+ }),
321
+ '3pm',
322
+ );
323
+ });
324
+
325
+ it('should limit to minute precision when maxPrecision is "minute"', () => {
326
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 17));
327
+ const date = new Date(Date.UTC(2018, 0, 1, 15, 45, 17));
328
+ assert.equal(
329
+ formatDateFriendly(date, 'UTC', {
330
+ baseDate,
331
+ maxPrecision: 'minute',
332
+ timeOnly: true,
333
+ includeTz: false,
334
+ }),
335
+ '3:45pm',
336
+ );
337
+ });
338
+
339
+ it('should show second precision when maxPrecision is "second"', () => {
340
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 17));
341
+ const date = new Date(Date.UTC(2018, 0, 1, 15, 45, 17));
342
+ assert.equal(
343
+ formatDateFriendly(date, 'UTC', {
344
+ baseDate,
345
+ maxPrecision: 'second',
346
+ timeOnly: true,
347
+ includeTz: false,
348
+ }),
349
+ '3:45:17pm',
350
+ );
351
+ });
352
+
353
+ describe('minPrecision option', () => {
354
+ it('should sometimes show minutes when minPrecision is "hour"', () => {
355
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
356
+ const date1 = new Date(Date.UTC(2018, 0, 1, 15, 0, 0));
357
+ assert.equal(
358
+ formatDateFriendly(date1, 'UTC', {
359
+ baseDate,
360
+ minPrecision: 'hour',
361
+ timeOnly: true,
362
+ includeTz: false,
363
+ }),
364
+ '3pm',
365
+ );
366
+ const date2 = new Date(Date.UTC(2018, 0, 1, 15, 1, 0));
367
+ assert.equal(
368
+ formatDateFriendly(date2, 'UTC', {
369
+ baseDate,
370
+ minPrecision: 'hour',
371
+ timeOnly: true,
372
+ includeTz: false,
373
+ }),
374
+ '3:01pm',
375
+ );
376
+ const date3 = new Date(Date.UTC(2018, 0, 1, 15, 0, 1));
377
+ assert.equal(
378
+ formatDateFriendly(date3, 'UTC', {
379
+ baseDate,
380
+ minPrecision: 'hour',
381
+ timeOnly: true,
382
+ includeTz: false,
383
+ }),
384
+ '3:00:01pm',
385
+ );
386
+ });
387
+ it('should always show minutes when minPrecision is "minute"', () => {
388
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
389
+ const date = new Date(Date.UTC(2018, 0, 1, 15, 0, 0));
390
+ assert.equal(
391
+ formatDateFriendly(date, 'UTC', {
392
+ baseDate,
393
+ minPrecision: 'minute',
394
+ timeOnly: true,
395
+ includeTz: false,
396
+ }),
397
+ '3:00pm',
398
+ );
399
+ const date2 = new Date(Date.UTC(2018, 0, 1, 15, 1, 0));
400
+ assert.equal(
401
+ formatDateFriendly(date2, 'UTC', {
402
+ baseDate,
403
+ minPrecision: 'minute',
404
+ timeOnly: true,
405
+ includeTz: false,
406
+ }),
407
+ '3:01pm',
408
+ );
409
+ const date3 = new Date(Date.UTC(2018, 0, 1, 15, 0, 1));
410
+ assert.equal(
411
+ formatDateFriendly(date3, 'UTC', {
412
+ baseDate,
413
+ minPrecision: 'minute',
414
+ timeOnly: true,
415
+ includeTz: false,
416
+ }),
417
+ '3:00:01pm',
418
+ );
419
+ });
420
+ });
421
+
422
+ describe('precision option combinations', () => {
423
+ it('should work with fixed precision (min=max)', () => {
424
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
425
+ const date1 = new Date(Date.UTC(2018, 0, 1, 15, 0, 0));
426
+ assert.equal(
427
+ formatDateFriendly(date1, 'UTC', {
428
+ baseDate,
429
+ maxPrecision: 'hour',
430
+ minPrecision: 'hour',
431
+ timeOnly: true,
432
+ includeTz: false,
433
+ }),
434
+ '3pm',
435
+ );
436
+ assert.equal(
437
+ formatDateFriendly(date1, 'UTC', {
438
+ baseDate,
439
+ maxPrecision: 'minute',
440
+ minPrecision: 'minute',
441
+ timeOnly: true,
442
+ includeTz: false,
443
+ }),
444
+ '3:00pm',
445
+ );
446
+ assert.equal(
447
+ formatDateFriendly(date1, 'UTC', {
448
+ baseDate,
449
+ maxPrecision: 'second',
450
+ minPrecision: 'second',
451
+ timeOnly: true,
452
+ includeTz: false,
453
+ }),
454
+ '3:00:00pm',
455
+ );
456
+ const date2 = new Date(Date.UTC(2018, 0, 1, 15, 30, 45));
457
+ assert.equal(
458
+ formatDateFriendly(date2, 'UTC', {
459
+ baseDate,
460
+ maxPrecision: 'hour',
461
+ minPrecision: 'hour',
462
+ timeOnly: true,
463
+ includeTz: false,
464
+ }),
465
+ '3pm',
466
+ );
467
+ assert.equal(
468
+ formatDateFriendly(date2, 'UTC', {
469
+ baseDate,
470
+ maxPrecision: 'minute',
471
+ minPrecision: 'minute',
472
+ timeOnly: true,
473
+ includeTz: false,
474
+ }),
475
+ '3:30pm',
476
+ );
477
+ assert.equal(
478
+ formatDateFriendly(date2, 'UTC', {
479
+ baseDate,
480
+ maxPrecision: 'second',
481
+ minPrecision: 'second',
482
+ timeOnly: true,
483
+ includeTz: false,
484
+ }),
485
+ '3:30:45pm',
486
+ );
487
+ });
488
+ });
489
+
490
+ describe('precision with full date formatting', () => {
491
+ it('should work with full date and time formatting', () => {
492
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
493
+ const date = new Date(Date.UTC(2018, 0, 1, 15, 45, 17));
494
+ assert.equal(
495
+ formatDateFriendly(date, 'UTC', { baseDate, maxPrecision: 'minute' }),
496
+ 'today, 3:45pm (UTC)',
497
+ );
498
+ });
499
+
500
+ it('should work with timeFirst option', () => {
501
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
502
+ const date = new Date(Date.UTC(2018, 0, 1, 15, 0, 0));
503
+ assert.equal(
504
+ formatDateFriendly(date, 'UTC', {
505
+ baseDate,
506
+ minPrecision: 'minute',
507
+ timeFirst: true,
508
+ }),
509
+ '3:00pm today (UTC)',
510
+ );
511
+ });
512
+ });
513
+ });
514
+
515
+ describe('formatDateRangeFriendly()', () => {
516
+ it('should handle two different dates', () => {
517
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
518
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
519
+ const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
520
+ assert.equal(
521
+ formatDateRangeFriendly(start, end, 'UTC', { baseDate }),
522
+ 'today, 12:34pm to Wed, Jan\u00a03, 10am (UTC)',
523
+ );
524
+ });
525
+
526
+ it('should handle the same date with different times', () => {
527
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
528
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
529
+ const end = new Date(Date.UTC(2018, 0, 1, 13, 0, 0));
530
+ assert.equal(
531
+ formatDateRangeFriendly(start, end, 'UTC', { baseDate }),
532
+ 'today, 12:34pm to 1pm (UTC)',
533
+ );
534
+ });
535
+
536
+ it('should handle the same date with the same time', () => {
537
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
538
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
539
+ const end = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
540
+ assert.equal(
541
+ formatDateRangeFriendly(start, end, 'UTC', { baseDate }),
542
+ 'today, 12:34pm (UTC)',
543
+ );
544
+ });
545
+
546
+ it('should handle two different dates with the time first', () => {
547
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
548
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
549
+ const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
550
+ assert.equal(
551
+ formatDateRangeFriendly(start, end, 'UTC', { baseDate, timeFirst: true }),
552
+ '12:34pm today to 10am Wed, Jan\u00a03 (UTC)',
553
+ );
554
+ });
555
+
556
+ it('should handle the same date with different times with the time first', () => {
557
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
558
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
559
+ const end = new Date(Date.UTC(2018, 0, 1, 13, 0, 0));
560
+ assert.equal(
561
+ formatDateRangeFriendly(start, end, 'UTC', { baseDate, timeFirst: true }),
562
+ '12:34pm to 1pm today (UTC)',
563
+ );
564
+ });
565
+
566
+ it('should handle the same date with the same time and the time first', () => {
567
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
568
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
569
+ const end = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
570
+ assert.equal(
571
+ formatDateRangeFriendly(start, end, 'UTC', { baseDate, timeFirst: true }),
572
+ '12:34pm today (UTC)',
573
+ );
574
+ });
575
+
576
+ it('should handle two different dates without the timezone', () => {
577
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
578
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
579
+ const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
580
+ assert.equal(
581
+ formatDateRangeFriendly(start, end, 'UTC', { baseDate, includeTz: false }),
582
+ 'today, 12:34pm to Wed, Jan\u00a03, 10am',
583
+ );
584
+ });
585
+
586
+ it('should handle two different dates with only dates and without the timezone', () => {
587
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
588
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
589
+ const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
590
+ assert.equal(
591
+ formatDateRangeFriendly(start, end, 'UTC', {
592
+ baseDate,
593
+ dateOnly: true,
594
+ includeTz: false,
595
+ }),
596
+ 'today to Wed, Jan\u00a03',
597
+ );
598
+ });
599
+
600
+ it('should handle two different dates with time first and without the timezone', () => {
601
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
602
+ const start = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
603
+ const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
604
+ assert.equal(
605
+ formatDateRangeFriendly(start, end, 'UTC', {
606
+ baseDate,
607
+ timeFirst: true,
608
+ includeTz: false,
609
+ }),
610
+ '12:34pm today to 10am Wed, Jan\u00a03',
611
+ );
612
+ });
613
+
614
+ it('should handle two different dates in CST', () => {
615
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
616
+ const start = new Date(Date.UTC(2018, 0, 1, 0, 34, 0));
617
+ const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
618
+ assert.equal(
619
+ formatDateRangeFriendly(start, end, 'America/Chicago', { baseDate }),
620
+ 'yesterday, 6:34pm to Wed, Jan\u00a03, 4am (CST)',
621
+ );
622
+ });
623
+
624
+ it('should handle two different dates in CST without the timezone', () => {
625
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 34, 0));
626
+ const start = new Date(Date.UTC(2018, 0, 1, 0, 34, 0));
627
+ const end = new Date(Date.UTC(2018, 0, 3, 10, 0, 0));
628
+ assert.equal(
629
+ formatDateRangeFriendly(start, end, 'America/Chicago', {
630
+ baseDate,
631
+ includeTz: false,
632
+ }),
633
+ 'yesterday, 6:34pm to Wed, Jan\u00a03, 4am',
634
+ );
635
+ });
636
+
637
+ describe('precision options', () => {
638
+ it('should apply maxPrecision to both start and end times', () => {
639
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
640
+ const start = new Date(Date.UTC(2018, 0, 1, 15, 45, 17));
641
+ const end = new Date(Date.UTC(2018, 0, 1, 17, 30, 45));
642
+ assert.equal(
643
+ formatDateRangeFriendly(start, end, 'UTC', {
644
+ baseDate,
645
+ maxPrecision: 'minute',
646
+ includeTz: false,
647
+ }),
648
+ 'today, 3:45pm to 5:30pm',
649
+ );
650
+ });
651
+
652
+ it('should apply minPrecision to both start and end times', () => {
653
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
654
+ const start = new Date(Date.UTC(2018, 0, 1, 15, 0, 0));
655
+ const end = new Date(Date.UTC(2018, 0, 1, 17, 0, 0));
656
+ assert.equal(
657
+ formatDateRangeFriendly(start, end, 'UTC', {
658
+ baseDate,
659
+ minPrecision: 'minute',
660
+ includeTz: false,
661
+ }),
662
+ 'today, 3:00pm to 5:00pm',
663
+ );
664
+ });
665
+
666
+ it('should handle precision options with different dates', () => {
667
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
668
+ const start = new Date(Date.UTC(2018, 0, 1, 15, 45, 17));
669
+ const end = new Date(Date.UTC(2018, 0, 2, 10, 30, 45));
670
+ assert.equal(
671
+ formatDateRangeFriendly(start, end, 'UTC', {
672
+ baseDate,
673
+ maxPrecision: 'hour',
674
+ includeTz: false,
675
+ }),
676
+ 'today, 3pm to tomorrow, 10am',
677
+ );
678
+ });
679
+
680
+ it('should handle precision options with same times', () => {
681
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
682
+ const start = new Date(Date.UTC(2018, 0, 1, 15, 0, 0));
683
+ const end = new Date(Date.UTC(2018, 0, 1, 15, 0, 0));
684
+ assert.equal(
685
+ formatDateRangeFriendly(start, end, 'UTC', {
686
+ baseDate,
687
+ maxPrecision: 'second',
688
+ minPrecision: 'second',
689
+ includeTz: false,
690
+ }),
691
+ 'today, 3:00:00pm',
692
+ );
693
+ });
694
+
695
+ it('should work with timeFirst and precision options', () => {
696
+ const baseDate = new Date(Date.UTC(2018, 0, 1, 12, 0, 0));
697
+ const start = new Date(Date.UTC(2018, 0, 1, 15, 45, 17));
698
+ const end = new Date(Date.UTC(2018, 0, 1, 17, 30, 45));
699
+ assert.equal(
700
+ formatDateRangeFriendly(start, end, 'UTC', {
701
+ baseDate,
702
+ maxPrecision: 'minute',
703
+ timeFirst: true,
704
+ includeTz: false,
705
+ }),
706
+ '3:45pm to 5:30pm today',
707
+ );
708
+ });
709
+ });
423
710
  });
424
711
  });
425
712
  });