Skip to content

Commit 352771f

Browse files
committed
Add functions for modifying Date / Time parts of DateTime
1 parent 5b00773 commit 352771f

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/Data/DateTime.purs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
module Data.DateTime
22
( DateTime(..)
33
, date
4+
, modifyDate
5+
, modifyDateF
46
, time
7+
, modifyTime
8+
, modifyTimeF
59
, adjust
610
, diff
711
, module Data.Date
@@ -35,9 +39,21 @@ instance showDateTime :: Show DateTime where
3539
date :: DateTime -> Date
3640
date (DateTime d _) = d
3741

42+
modifyDate :: (Date -> Date) -> DateTime -> DateTime
43+
modifyDate f (DateTime d t) = DateTime (f d) t
44+
45+
modifyDateF :: forall f. Functor f => (Date -> f Date) -> DateTime -> f DateTime
46+
modifyDateF f (DateTime d t) = flip DateTime t <$> f d
47+
3848
time :: DateTime -> Time
3949
time (DateTime _ t) = t
4050

51+
modifyTime :: (Time -> Time) -> DateTime -> DateTime
52+
modifyTime f (DateTime d t) = DateTime d (f t)
53+
54+
modifyTimeF :: forall f. Functor f => (Time -> f Time) -> DateTime -> f DateTime
55+
modifyTimeF f (DateTime d t) = DateTime d <$> f t
56+
4157
-- | Adjusts a date/time value with a duration offset. `Nothing` is returned
4258
-- | if the resulting date would be outside of the range of valid dates.
4359
adjust :: forall d. Duration d => d -> DateTime -> Maybe DateTime

0 commit comments

Comments
 (0)