Skip to content

Commit 0939947

Browse files
committed
add weekday name format for DateTimes
1 parent 201cf5d commit 0939947

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

src/Data/Formatter/DateTime.purs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ data FormatterCommand
5757
| DayOfMonth
5858
| UnixTimestamp
5959
| DayOfWeek
60+
| DayOfWeekName
6061
| Hours24
6162
| Hours12
6263
| Meridiem
@@ -89,6 +90,7 @@ printFormatterCommand = case _ of
8990
DayOfMonth"D"
9091
UnixTimestamp"X"
9192
DayOfWeek"E"
93+
DayOfWeekName"A"
9294
Hours24"HH"
9395
Hours12"hh"
9496
Meridiem"a"
@@ -125,6 +127,7 @@ formatterCommandParser = (PC.try <<< PS.string) `oneOfAs`
125127
, Tuple "DD" DayOfMonthTwoDigits
126128
, Tuple "D" DayOfMonth
127129
, Tuple "E" DayOfWeek
130+
, Tuple "A" DayOfWeekName
128131
, Tuple "HH" Hours24
129132
, Tuple "hh" Hours12
130133
, Tuple "a" Meridiem
@@ -167,6 +170,7 @@ formatCommand dt@(DT.DateTime d t) = case _ of
167170
DayOfMonth → show $ fromEnum $ D.day d
168171
UnixTimestamp → show $ Int.floor $ (_ / 1000.0) $ unwrap $ unInstant $ fromDateTime dt
169172
DayOfWeek → show $ fromEnum $ D.weekday d
173+
DayOfWeekName → show $ D.weekday d
170174
Hours24 → padSingleDigit (fromEnum $ T.hour t)
171175
Hours12 → padSingleDigit $ fix12 $ (fromEnum $ T.hour t) `mod` 12
172176
Meridiemif (fromEnum $ T.hour t) >= 12 then "PM" else "AM"
@@ -356,6 +360,8 @@ unformatCommandParser = case _ of
356360
}
357361
-- TODO we would need to use this value if we support date format using week number
358362
DayOfWeek → void $ parseInt 1 (validateRange 1 7) "Incorrect day of week"
363+
DayOfWeekName → _{day = _} `modifyWithParser`
364+
(fromEnum <$> parseDayOfWeekName)
359365
Hours24 → _{hour = _} `modifyWithParser`
360366
(parseInt 2 (validateRange 0 24 <> exactLength) "Incorrect 24 hour")
361367
Hours12 → _{hour = _} `modifyWithParser`
@@ -405,6 +411,18 @@ parseMeridiem = (PC.try <<< PS.string) `oneOfAs`
405411
, Tuple "PM" PM
406412
]
407413

414+
415+
parseDayOfWeekName m. Monad m P.ParserT String m D.Weekday
416+
parseDayOfWeekName = (PC.try <<< PS.string) `oneOfAs`
417+
[ Tuple "Monday" D.Monday
418+
, Tuple "Tuesday" D.Tuesday
419+
, Tuple "Wednesday" D.Wednesday
420+
, Tuple "Thursday" D.Thursday
421+
, Tuple "Friday" D.Friday
422+
, Tuple "Saturday" D.Saturday
423+
, Tuple "Sunday" D.Sunday
424+
]
425+
408426
parseMonth m. Monad m P.ParserT String m D.Month
409427
parseMonth = (PC.try <<< PS.string) `oneOfAs`
410428
[ Tuple "January" D.January

test/src/DateTime.purs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ datetimeTest = describe "Data.Formatter.DateTime" do
2222
, { format: "YYYY-DD-MM", dateStr: "2017-12-04" , date: makeDateTime 2017 4 12 11 3 4 234}
2323
, { format: "YYYY-MMM", dateStr: "2017-Apr" , date: makeDateTime 2017 4 12 11 3 4 234}
2424
, { format: "MMM D", dateStr: "Apr 1" , date: makeDateTime 2017 4 1 0 0 0 0}
25+
, { format: "A, MMM D", dateStr: "Saturday, Apr 1" , date: makeDateTime 2017 4 1 0 0 0 0}
2526
, { format: "hh:mm:ss:SSS a", dateStr: "11:03:04:234 AM" , date: makeDateTime 2017 4 12 11 3 4 234}
2627
, { format: "YY", dateStr: "17" , date: makeDateTime 2017 4 12 11 3 4 234}
2728
, { format: "YY", dateStr: "17" , date: makeDateTime 20017 4 12 0 0 0 0} -- Format 20017 with YY

0 commit comments

Comments
 (0)