Skip to content

Commit d25b046

Browse files
authored
Merge branch 'master' into allow-timestamp-parsing
2 parents de78923 + 859e9f5 commit d25b046

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/Data/Formatter/DateTime.purs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
DayOfWeekNameShortStr.take 3 $ show $ D.weekday d
171179
Hours24 → padSingleDigit (fromEnum $ T.hour t)
172180
Hours12 → padSingleDigit $ fix12 $ (fromEnum $ T.hour t) `mod` 12
173181
Meridiemif (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+
409444
parseMonth m. Monad m P.ParserT String m D.Month
410445
parseMonth = (PC.try <<< PS.string) `oneOfAs`
411446
[ Tuple "January" D.January

test/src/DateTime.purs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ 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: "dddd, MMM D", dateStr: "Saturday, Apr 1" , date: makeDateTime 2017 4 1 0 0 0 0}
26+
, { format: "ddd, MMM D", dateStr: "Sat, Apr 1" , date: makeDateTime 2017 4 1 0 0 0 0}
2527
, { format: "hh:mm:ss:SSS a", dateStr: "11:03:04:234 AM" , date: makeDateTime 2017 4 12 11 3 4 234}
2628
, { format: "YY", dateStr: "17" , date: makeDateTime 2017 4 12 11 3 4 234}
2729
, { format: "YY", dateStr: "17" , date: makeDateTime 20017 4 12 0 0 0 0} -- Format 20017 with YY

0 commit comments

Comments
 (0)