@@ -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"
@@ -126,6 +130,8 @@ formatterCommandParser = (PC.try <<< PS.string) `oneOfAs`
126130 , Tuple " D" DayOfMonth
127131 , Tuple " E" DayOfWeek
128132 , Tuple " X" UnixTimestamp
133+ , Tuple " dddd" DayOfWeekName
134+ , Tuple " ddd" DayOfWeekNameShort
129135 , Tuple " HH" Hours24
130136 , Tuple " hh" Hours12
131137 , Tuple " a" Meridiem
@@ -168,6 +174,8 @@ formatCommand dt@(DT.DateTime d t) = case _ of
168174 DayOfMonth → show $ fromEnum $ D .day d
169175 UnixTimestamp → show $ Int .floor $ (_ / 1000.0 ) $ unwrap $ unInstant $ fromDateTime dt
170176 DayOfWeek → show $ fromEnum $ D .weekday d
177+ DayOfWeekName → show $ D .weekday d
178+ DayOfWeekNameShort → Str .take 3 $ show $ D .weekday d
171179 Hours24 → padSingleDigit (fromEnum $ T .hour t)
172180 Hours12 → padSingleDigit $ fix12 $ (fromEnum $ T .hour t) `mod` 12
173181 Meridiem → if (fromEnum $ T .hour t) >= 12 then " PM" else " AM"
@@ -357,6 +365,10 @@ unformatCommandParser = case _ of
357365 }
358366 -- TODO we would need to use this value if we support date format using week number
359367 DayOfWeek → void $ parseInt 1 (validateRange 1 7 ) " Incorrect day of week"
368+ DayOfWeekName → _{day = _} `modifyWithParser`
369+ (fromEnum <$> parseDayOfWeekName)
370+ DayOfWeekNameShort → _{day = _} `modifyWithParser`
371+ (fromEnum <$> parseDayOfWeekNameShort)
360372 Hours24 → _{hour = _} `modifyWithParser`
361373 (parseInt 2 (validateRange 0 24 <> exactLength) " Incorrect 24 hour" )
362374 Hours12 → _{hour = _} `modifyWithParser`
@@ -406,6 +418,29 @@ parseMeridiem = (PC.try <<< PS.string) `oneOfAs`
406418 , Tuple " PM" PM
407419 ]
408420
421+
422+ parseDayOfWeekName ∷ ∀ m . Monad m ⇒ P.ParserT String m D.Weekday
423+ parseDayOfWeekName = (PC .try <<< PS .string) `oneOfAs`
424+ [ Tuple " Monday" D.Monday
425+ , Tuple " Tuesday" D.Tuesday
426+ , Tuple " Wednesday" D.Wednesday
427+ , Tuple " Thursday" D.Thursday
428+ , Tuple " Friday" D.Friday
429+ , Tuple " Saturday" D.Saturday
430+ , Tuple " Sunday" D.Sunday
431+ ]
432+
433+ parseDayOfWeekNameShort ∷ ∀ m . Monad m ⇒ P.ParserT String m D.Weekday
434+ parseDayOfWeekNameShort = (PC .try <<< PS .string) `oneOfAs`
435+ [ Tuple " Mon" D.Monday
436+ , Tuple " Tue" D.Tuesday
437+ , Tuple " Wed" D.Wednesday
438+ , Tuple " Thu" D.Thursday
439+ , Tuple " Fri" D.Friday
440+ , Tuple " Sat" D.Saturday
441+ , Tuple " Sun" D.Sunday
442+ ]
443+
409444parseMonth ∷ ∀ m . Monad m ⇒ P.ParserT String m D.Month
410445parseMonth = (PC .try <<< PS .string) `oneOfAs`
411446 [ Tuple " January" D.January
0 commit comments