Safe Haskell | None |
---|---|
Language | Haskell2010 |
Parse strings that aren't so precise
Synopsis
- data Config = Config {}
- data DateTime = DateTime {}
- data DateInterval
- class Timeable t => Time t where
- timeFromElapsedP :: ElapsedP -> t
- timeFromElapsed :: Elapsed -> t
- defaultConfig :: DateTime -> Config
- defaultConfigIO :: IO Config
- parseDate :: Config -> String -> Either ParseError Date
- parseDateTime :: Config -> String -> Either ParseError DateTime
- pAbsDateTime :: Stream s m Char => Int -> ParsecT s st m DateTime
- pAbsDate :: Stream s m Char => Int -> ParsecT s st m Date
- pDate :: Stream s m Char => Config -> ParsecT s st m Date
- pDateTime :: Stream s m Char => Config -> ParsecT s st m DateTime
- time :: Stream s m Char => ParsecT s st m TimeOfDay
- pDateInterval :: Stream s m Char => ParsecT s st m DateInterval
- weekdayToInterval :: Config -> WeekDay -> DateInterval
- dateWeekDay :: DateTime -> WeekDay
- getStartOfThisWeek :: Config -> DateTime
- getStartOfNextWeek :: Config -> DateTime
- lastDate :: Stream s m Char => Config -> ParsecT s st m DateTime
- nextDate :: Stream s m Char => Config -> ParsecT s st m DateTime
- addInterval :: DateTime -> DateInterval -> DateTime
- negateInterval :: DateInterval -> DateInterval
- minusInterval :: DateTime -> DateInterval -> DateTime
- dateInFormat :: Stream s m Char => Int -> DateFormat -> ParsecT s st m Date
- extractDates :: String -> IO [Date]
- extractDatesY :: Int -> String -> [Date]
- extractDatesConfig :: Config -> String -> [Date]
- extractDateTimes :: String -> IO [DateTime]
- extractDateTimesY :: Int -> String -> [DateTime]
- extractDateTimesConfig :: Config -> String -> [DateTime]
- extract :: Stream s m Char => ParsecT s st m a -> ParsecT s st m [a]
Documentation
Date and Time
Instances
Eq DateTime | |
Data DateTime | |
Defined in Time.Types gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DateTime -> c DateTime # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DateTime # toConstr :: DateTime -> Constr # dataTypeOf :: DateTime -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DateTime) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DateTime) # gmapT :: (forall b. Data b => b -> b) -> DateTime -> DateTime # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DateTime -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DateTime -> r # gmapQ :: (forall d. Data d => d -> u) -> DateTime -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> DateTime -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DateTime -> m DateTime # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DateTime -> m DateTime # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DateTime -> m DateTime # | |
Ord DateTime | |
Read DateTime | |
Show DateTime | |
NFData DateTime | |
Defined in Time.Types | |
Timeable DateTime | |
Defined in Data.Hourglass.Time timeGetElapsedP :: DateTime -> ElapsedP # timeGetElapsed :: DateTime -> Elapsed # | |
Time DateTime | |
Defined in Data.Hourglass.Time timeFromElapsedP :: ElapsedP -> DateTime # timeFromElapsed :: Elapsed -> DateTime # |
data DateInterval Source #
Instances
Eq DateInterval Source # | |
Defined in Data.Dates.Parsing (==) :: DateInterval -> DateInterval -> Bool # (/=) :: DateInterval -> DateInterval -> Bool # | |
Data DateInterval Source # | |
Defined in Data.Dates.Parsing gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> DateInterval -> c DateInterval # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c DateInterval # toConstr :: DateInterval -> Constr # dataTypeOf :: DateInterval -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c DateInterval) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c DateInterval) # gmapT :: (forall b. Data b => b -> b) -> DateInterval -> DateInterval # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> DateInterval -> r # gmapQr :: (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> DateInterval -> r # gmapQ :: (forall d. Data d => d -> u) -> DateInterval -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> DateInterval -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> DateInterval -> m DateInterval # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> DateInterval -> m DateInterval # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> DateInterval -> m DateInterval # | |
Show DateInterval Source # | |
Defined in Data.Dates.Parsing showsPrec :: Int -> DateInterval -> ShowS # show :: DateInterval -> String # showList :: [DateInterval] -> ShowS # |
class Timeable t => Time t where #
Represent time types that can be created from other time types.
Every conversion happens throught ElapsedP or Elapsed types.
timeFromElapsedP :: ElapsedP -> t #
convert from a number of elapsed seconds and nanoseconds to another time representation
timeFromElapsed :: Elapsed -> t #
convert from a number of elapsed seconds and nanoseconds to another time representation
defaults to timeFromElapsedP unless defined explicitely by an instance.
Instances
Time CTime | |
Defined in Data.Hourglass.Time timeFromElapsedP :: ElapsedP -> CTime # timeFromElapsed :: Elapsed -> CTime # | |
Time Elapsed | |
Defined in Data.Hourglass.Time timeFromElapsedP :: ElapsedP -> Elapsed # timeFromElapsed :: Elapsed -> Elapsed # | |
Time ElapsedP | |
Defined in Data.Hourglass.Time timeFromElapsedP :: ElapsedP -> ElapsedP # timeFromElapsed :: Elapsed -> ElapsedP # | |
Time Date | |
Defined in Data.Hourglass.Time timeFromElapsedP :: ElapsedP -> Date # timeFromElapsed :: Elapsed -> Date # | |
Time DateTime | |
Defined in Data.Hourglass.Time timeFromElapsedP :: ElapsedP -> DateTime # timeFromElapsed :: Elapsed -> DateTime # |
defaultConfig :: DateTime -> Config Source #
:: Config | |
-> String | String to parse |
-> Either ParseError DateTime |
Parse date/time
pDateTime :: Stream s m Char => Config -> ParsecT s st m DateTime Source #
Parsec parser for DateTime.
pDateInterval :: Stream s m Char => ParsecT s st m DateInterval Source #
weekdayToInterval :: Config -> WeekDay -> DateInterval Source #
Weekday as interval from the configure start of the week
dateWeekDay :: DateTime -> WeekDay Source #
Get weekday of given date.
getStartOfThisWeek :: Config -> DateTime Source #
getStartOfNextWeek :: Config -> DateTime Source #
addInterval :: DateTime -> DateInterval -> DateTime Source #
Add date interval to DateTime
negateInterval :: DateInterval -> DateInterval Source #
Negate DateInterval value: Days 3 -> Days (-3).
minusInterval :: DateTime -> DateInterval -> DateTime Source #
Subtract DateInterval from DateTime.
extractDates :: String -> IO [Date] Source #
Same as extractDatesY, but will get the current year from the system, so you don't have to provide it.
extractDatesY :: Int -> String -> [Date] Source #
Extract dates from a string, with the first argument being the current year (used for things like "Jan 18").
>>>
extractDatesY 2018 "The party will be on 6/9"
[Date 2018 June 9]
extractDateTimesY :: Int -> String -> [DateTime] Source #
Extract dates with optional times from a string, with the first argument being the current year (used for things like "Jan 18"). If no time is specified, will return time at midnight.
Note: This function **WILL NOT** parse relative dates like "2 weeks ago." For that, you must use extractDateTimesConfig
or extractDateTimes
, because the parser needs to know the exact date.
>>>
extractDateTimesY 2018 "The talk starts at 12.09.12 8:00 AM"
[DateTime {dtDate = Date {dateYear = 2012, dateMonth = September, dateDay = 12}, dtTime = TimeOfDay {todHour = 8h, todMin = 0m, todSec = 0s, todNSec = 0ns}}]
>>>
extractDateTimesY 2018 "The party will be on 6/9"
[DateTime {dtDate = Date {dateYear = 2018, dateMonth = June, dateDay = 9}, dtTime = TimeOfDay {todHour = 0h, todMin = 0m, todSec = 0s, todNSec = 0ns}}]