@@ -57,6 +57,8 @@ data FormatterCommand
57
57
| DayOfMonth
58
58
| UnixTimestamp
59
59
| DayOfWeek
60
+ | DayOfWeekName
61
+ | DayOfWeekNameShort
60
62
| Hours24
61
63
| Hours12
62
64
| Meridiem
@@ -89,6 +91,8 @@ printFormatterCommand = case _ of
89
91
DayOfMonth → " D"
90
92
UnixTimestamp → " X"
91
93
DayOfWeek → " E"
94
+ DayOfWeekName → " dddd"
95
+ DayOfWeekNameShort → " ddd"
92
96
Hours24 → " HH"
93
97
Hours12 → " hh"
94
98
Meridiem → " a"
@@ -125,6 +129,8 @@ formatterCommandParser = (PC.try <<< PS.string) `oneOfAs`
125
129
, Tuple " DD" DayOfMonthTwoDigits
126
130
, Tuple " D" DayOfMonth
127
131
, Tuple " E" DayOfWeek
132
+ , Tuple " dddd" DayOfWeekName
133
+ , Tuple " ddd" DayOfWeekNameShort
128
134
, Tuple " HH" Hours24
129
135
, Tuple " hh" Hours12
130
136
, Tuple " a" Meridiem
@@ -167,6 +173,8 @@ formatCommand dt@(DT.DateTime d t) = case _ of
167
173
DayOfMonth → show $ fromEnum $ D .day d
168
174
UnixTimestamp → show $ Int .floor $ (_ / 1000.0 ) $ unwrap $ unInstant $ fromDateTime dt
169
175
DayOfWeek → show $ fromEnum $ D .weekday d
176
+ DayOfWeekName → show $ D .weekday d
177
+ DayOfWeekNameShort → Str .take 3 $ show $ D .weekday d
170
178
Hours24 → padSingleDigit (fromEnum $ T .hour t)
171
179
Hours12 → padSingleDigit $ fix12 $ (fromEnum $ T .hour t) `mod` 12
172
180
Meridiem → if (fromEnum $ T .hour t) >= 12 then " PM" else " AM"
@@ -356,6 +364,10 @@ unformatCommandParser = case _ of
356
364
}
357
365
-- TODO we would need to use this value if we support date format using week number
358
366
DayOfWeek → void $ parseInt 1 (validateRange 1 7 ) " Incorrect day of week"
367
+ DayOfWeekName → _{day = _} `modifyWithParser`
368
+ (fromEnum <$> parseDayOfWeekName)
369
+ DayOfWeekNameShort → _{day = _} `modifyWithParser`
370
+ (fromEnum <$> parseDayOfWeekNameShort)
359
371
Hours24 → _{hour = _} `modifyWithParser`
360
372
(parseInt 2 (validateRange 0 24 <> exactLength) " Incorrect 24 hour" )
361
373
Hours12 → _{hour = _} `modifyWithParser`
@@ -405,6 +417,29 @@ parseMeridiem = (PC.try <<< PS.string) `oneOfAs`
405
417
, Tuple " PM" PM
406
418
]
407
419
420
+
421
+ parseDayOfWeekName ∷ ∀ m . Monad m ⇒ P.ParserT String m D.Weekday
422
+ parseDayOfWeekName = (PC .try <<< PS .string) `oneOfAs`
423
+ [ Tuple " Monday" D.Monday
424
+ , Tuple " Tuesday" D.Tuesday
425
+ , Tuple " Wednesday" D.Wednesday
426
+ , Tuple " Thursday" D.Thursday
427
+ , Tuple " Friday" D.Friday
428
+ , Tuple " Saturday" D.Saturday
429
+ , Tuple " Sunday" D.Sunday
430
+ ]
431
+
432
+ parseDayOfWeekNameShort ∷ ∀ m . Monad m ⇒ P.ParserT String m D.Weekday
433
+ parseDayOfWeekNameShort = (PC .try <<< PS .string) `oneOfAs`
434
+ [ Tuple " Mon" D.Monday
435
+ , Tuple " Tue" D.Tuesday
436
+ , Tuple " Wed" D.Wednesday
437
+ , Tuple " Thu" D.Thursday
438
+ , Tuple " Fri" D.Friday
439
+ , Tuple " Sat" D.Saturday
440
+ , Tuple " Sun" D.Sunday
441
+ ]
442
+
408
443
parseMonth ∷ ∀ m . Monad m ⇒ P.ParserT String m D.Month
409
444
parseMonth = (PC .try <<< PS .string) `oneOfAs`
410
445
[ Tuple " January" D.January
0 commit comments