@@ -57,6 +57,8 @@ data FormatterCommand
5757 | DayOfMonth
5858 | UnixTimestamp
5959 | DayOfWeek
60+ | DayOfWeekName
61+ | DayOfWeekNameShort
6062 | Hours24
6163 | Hours12
6264 | Meridiem
@@ -89,6 +91,8 @@ printFormatterCommand = case _ of
8991 DayOfMonth → " D"
9092 UnixTimestamp → " X"
9193 DayOfWeek → " E"
94+ DayOfWeekName → " dddd"
95+ DayOfWeekNameShort → " ddd"
9296 Hours24 → " HH"
9397 Hours12 → " hh"
9498 Meridiem → " a"
@@ -125,6 +129,8 @@ formatterCommandParser = (PC.try <<< PS.string) `oneOfAs`
125129 , Tuple " DD" DayOfMonthTwoDigits
126130 , Tuple " D" DayOfMonth
127131 , Tuple " E" DayOfWeek
132+ , Tuple " dddd" DayOfWeekName
133+ , Tuple " ddd" DayOfWeekNameShort
128134 , Tuple " HH" Hours24
129135 , Tuple " hh" Hours12
130136 , Tuple " a" Meridiem
@@ -167,6 +173,8 @@ formatCommand dt@(DT.DateTime d t) = case _ of
167173 DayOfMonth → show $ fromEnum $ D .day d
168174 UnixTimestamp → show $ Int .floor $ (_ / 1000.0 ) $ unwrap $ unInstant $ fromDateTime dt
169175 DayOfWeek → show $ fromEnum $ D .weekday d
176+ DayOfWeekName → show $ D .weekday d
177+ DayOfWeekNameShort → Str .take 3 $ show $ D .weekday d
170178 Hours24 → padSingleDigit (fromEnum $ T .hour t)
171179 Hours12 → padSingleDigit $ fix12 $ (fromEnum $ T .hour t) `mod` 12
172180 Meridiem → if (fromEnum $ T .hour t) >= 12 then " PM" else " AM"
@@ -356,6 +364,10 @@ unformatCommandParser = case _ of
356364 }
357365 -- TODO we would need to use this value if we support date format using week number
358366 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)
359371 Hours24 → _{hour = _} `modifyWithParser`
360372 (parseInt 2 (validateRange 0 24 <> exactLength) " Incorrect 24 hour" )
361373 Hours12 → _{hour = _} `modifyWithParser`
@@ -405,6 +417,29 @@ parseMeridiem = (PC.try <<< PS.string) `oneOfAs`
405417 , Tuple " PM" PM
406418 ]
407419
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+
408443parseMonth ∷ ∀ m . Monad m ⇒ P.ParserT String m D.Month
409444parseMonth = (PC .try <<< PS .string) `oneOfAs`
410445 [ Tuple " January" D.January
0 commit comments